java1.7には注意してください。バグがあります。rancidfishbreathによって投稿されたソリューションは、Java 1.6で完璧ですが、Java1.7で終了することのないSwingアプリケーションになります。JDK 1.7では、新しいEvenQueueをイベントディスパッチスレッドにインストールする必要があります...そしてJDK 1.6ではその外部にインストールする必要があります...一度書き込み、どこでも実行します;-)
これが普遍的な解決策です...希望、1.8はそれを変えません;-)
import java.awt.AWTEvent;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.lang.reflect.InvocationTargetException;
public class QueueTest {
public static void main(String[] args) throws InterruptedException, InvocationTargetException {
if (!isJava7Like()) setQueue();
EventQueue.invokeAndWait(new Runnable() {
public void run() {
if (QueueTest.isJava7Like()) setQueue();
System.out.println("Run");
}
});
}
private static void setQueue() {
EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
eventQueue.push(new MyEventQueue());
}
private static boolean isJava7Like() {
return Float.parseFloat(System.getProperty("java.specification.version")) > 1.6;
}
private static class MyEventQueue extends EventQueue {
public void postEvent(AWTEvent theEvent) {
System.out.println("Event Posted");
super.postEvent(theEvent);
}
}
}