작은 자바 2D 게임을 만들기 위해 스윙을 사용하고 있습니다. 나는 이미지 만 표시하려고합니다. 이후 내가 EDT에 아니에요 SwingUtilities.invokeLater() 물건을 할 사용하고 있습니다. 사용하면 이미지가 표시되지 않습니다 (사실 몇 밀리 초 동안 표시되고 사라집니다). SwingUtilities.invokeLater()를 사용하지 않으면 이미지가 올바르게 표시되지만 invokeLater()를 사용해야합니다.SwingUtilities.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();
}
}
}
어떤 생각 :
여기 내 기본 코드입니까?
감사합니다.
frame.getGraphics '()의 drawImage (I, 0, 0, NULL의).'문제가있다 .. –
메인 외측이 "최종 BreizhFrame 프레임"을 선언하고 시도. – Kishore
[Custom Painting] (http://docs.oracle.com/javase/tutorial/uiswing/painting/)을 통해 약간의 시간을 보냅니다. – MadProgrammer