我正在使用Swing来创建一个小型的2D 2D游戏。我只试图显示图像。由于我不在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();
}
}
}
有什么想法吗?
感谢。
答案 0 :(得分:3)
这不是你用Java做的。是的,您正在绘制图像,但过了一段时间后控件会失效并且在没有图像的情况下重新绘制。