У меня проблема с перерисовкой JPanel внутри JScrollPane.
По сути, я просто пытаюсь «обернуть» мою существующую панель редактирования (она изначально расширяла JPanel) в JScrollPane.
Кажется, что JPanel обновляется слишком часто (массовое мерцание). Как я мог бы предотвратить это? Я пытался использовать setIgnoreRepaint (), но, похоже, он ничего не делал.
Будет ли работать эта текущая реализация или мне нужно будет создать еще один внутренний класс для точной настройки JPanel, который я использую для отображения графики?
Код скелета:
public class MyProgram extends JFrame{
public MyProgram(){
super();
add(new EditPanel());
pack();
}
private class EditPanel extends JScrollPane{
private JPanel graphicsPanel;
public EditPanel(){
///EDIT, sorry, should have mentioned this was here before
super();
graphicsPanel = new JPanel();
this.setViewportView(graphicsPanel);
//END EDIT
}
public void paintComponent(Graphics g){
graphicsPanel.revalidate(); //update the scrollpane to current panel size
repaint();
Graphics g2 = graphicsPanel.getGraphics();
g2.drawImage(imageToDraw, 0, 0, null);
}
}
}