проблема отсечения свинг Java - PullRequest
0 голосов
/ 10 декабря 2010

У меня есть компонент Swing, который рисует фиксированное большое (но фиксированное) векторное изображение и накладывает части изображения на текст, который должен отображаться относительно порта просмотра (а не абсолютной позиции), - думаю, метки замороженных строк в Excelпоказано ниже):

Header
 -- [some stuff] ----- [ some stuff] ----
Header2
 ----- [some stuff] ----- [ some stuff] ----

Это прекрасно работает, за исключением случаев прокрутки слева направо.Я пытаюсь установить границы клипа для видимой области в методе paintComponent () так, чтобы весь видовой экран всегда рисовался - однако это не похоже на работу:

public void paintComponent(Graphics graphics) {
  Graphics2D g = (Graphics2D)graphics;
  Shape oldClip = g.getClip();

  Rectangle clipBounds = getVisibleRect();
  g.setClip(clipBounds);

  drawMyImage();
  drawMyHeaders();

  g.setClip(oldClip);
}

Однако это не похожечтобы работать, я вижу видимую область правильной формы, но установка клипа не имеет никакого эффекта.Что я могу сделать?

clip: java.awt.Rectangle[x=1762,y=0,width=57,height=182]    // clipped while scrolling
 vis: java.awt.Rectangle[x=1762,y=0,width=582,height=182]   // what I want to paint

1 Ответ

2 голосов
/ 10 декабря 2010

Вы не передаете графический объект в свои заголовки, поэтому они должны рисовать через что-то еще, что, вероятно, не установит вашу форму отсечения.

Как прокомментировано, не используйте setClip в paintComponent! Область отсечения используется Swing.

Похоже, вы хотите, чтобы наложенный компонент был расположен над прокручиваемым компонентом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...