1

小さな Java 2D ゲームを作成するために Swing を使用しています。画像を表示するだけです。私は 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();
    }

}

}

何か案が ?

ありがとう。

4

1 に答える 1

3

それはJavaで行う方法ではありません。はい、画像を描画していますが、しばらくするとコントロールが無効になり、画像なしで再描画されます。

このチュートリアルはあなたを助けるはずです

于 2013-04-15T10:47:12.203 に答える