Поведение при перерисовке графики Java

Я уже довольно давно искал причину такого поведения в моем коде. Я не хочу слишком глубоко погружаться в Swing API, чтобы понять, почему это происходит. Буду признателен за любую информацию о том, что вызывает эту проблему.

Это упрощенная версия приложения, которое я пишу, проблемы, похоже, заключаются в том, что когда я нажимаю "Рисовать" в первый раз, изображение не отображается на панели, но когда я щелкаю по нему во второй раз, оно будет рисовать изображение отлично. Любой рисунок, сделанный позже, будет работать правильно, но первоначальная проблема с краской меня сильно раздражает. Спасибо за любую помощь! :)

public class ImageTester {

public static void main(String[] args) {
    final JFrame window = new JFrame("Image Tester");
    final JPanel pane = new JPanel();
    JButton draw = new JButton("Draw");
    JButton paint = new JButton("Paint");

    Toolkit k = Toolkit.getDefaultToolkit();
    final Image i = k.createImage("tester.jpg");
    //pane.getGraphics().drawImage(i, 22, 15, null);

    draw.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent arg0) {
            System.out.println(pane.getGraphics());
            pane.getGraphics().drawRect(5, 5, 15, 15);
            pane.getGraphics().drawImage(i, 15, 15, null);
            System.out.println("Performance");
        }
    });

    paint.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {

        }
    });

    pane.add(draw);
    pane.add(paint);
    window.add(pane);
    window.setVisible(true);
    window.setSize(new Dimension(400, 400));
    window.setLocationRelativeTo(null);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
5
задан mKorbel 2 January 2012 в 07:55
поделиться