У меня есть JPanel в JScrollpane. Я рисую на BufferedImage, который я отображаю на JPanel. В верхнем левом углу JScrollpane мне нужна картинка, которая всегда остается в этом углу, когда я прокручиваю вниз, чтобы увидеть остальную часть моей JPanel. Здесь метод paintComponent Jpanel:
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
if (bufferedImage != null){
g.drawImage(bufferedImage, 0, 0, this);
Point p = parent.getViewPosition();
System.out.println("paintComponent(): "+ p.x + "," + p.y);
g.setColor(Color.RED);
g.fillRect(p.x + 20, p.y + 20, 200, 200);
}
}
Где parent.getViewPosition() дает мне scrollPane.getViewport().getViewPosition(). Когда я запускаю, я вижу буферизованное изображение с красным прямоугольником в верхнем левом углу. Когда я прокручиваю вниз, я вижу остальную часть буферизованного изображения, но красный прямоугольник перемещается вверх, а затем исчезает и больше не появляется, когда я прокручиваю вверх. В консоли я вижу, что точка p меняется при прокрутке:
paintComponent(): 0,0
paintComponent(): 0,10
paintComponent(): 0,20
paintComponent(): 0,30
paintComponent(): 0,40
paintComponent(): 0,50
Может ли кто-нибудь помочь мне с этой проблемой?
paint()
, используйтеJViewPort.setScrollMode(JViewport.Xxx)
, используйте собственныйRepaintManager
, но я бы использовалGlassPane
илиJLayer
- person mKorbel   schedule 18.03.2013