SwingUtilities.invokeLater() отображается только в течение одного кадра

Я использую Swing для создания небольшой 2D-игры на Java. Я только пытаюсь отобразить изображение. Поскольку я не нахожусь в EDT, я использую SwingUtilities.invokeLater(), чтобы делать это. Когда я его использую, изображение не отображается (на самом деле оно отображается в течение нескольких миллисекунд и исчезает). Когда я не использую SwingUtilities.invokeLater(), изображение отображается правильно, но мне нужно использовать invokeLater().

Вот мой основной код:

public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
    try {
        SwingUtilities.invokeAndWait(new Runnable() {

            @Override
            public void run() {
                final BreizhFrame frame = new BreizhFrame();
                File imgFile = new File("src/test/lvl1-800x450.jpg");
                System.out.println(String.valueOf(imgFile.exists()));
                System.out.println(SwingUtilities.isEventDispatchThread());
                Image i;
                try {
                    i = ImageIO.read(imgFile);
                    frame.getGraphics().drawImage(i, 0, 0, null);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
    } catch (InvocationTargetException | InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

}

Любая идея ?

Спасибо.


person Pierre Criulanscy    schedule 15.04.2013    source источник
comment
frame.getGraphics().drawImage(i, 0, 0, null); Есть проблема..   -  person Andrew Thompson    schedule 15.04.2013
comment
Объявите этот окончательный кадр BreizhFrame вне основного и попробуйте.   -  person Kishore    schedule 15.04.2013
comment
Потратьте немного времени, чтобы прочитать Пользовательское рисование   -  person MadProgrammer    schedule 15.04.2013


Ответы (1)


Это не то, как вы делаете это в Java. Да, вы рисуете изображение, но через некоторое время элемент управления становится недействительным и перерисовывается без вашего изображения.

Это руководство должно вам помочь

person Dariusz    schedule 15.04.2013
comment
Спасибо ! Это именно то, что мне нужно ;) - person Pierre Criulanscy; 15.04.2013