У меня есть компонент 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