JAVA awt eventqueue_如何用自己的实现替换AWT EventQueue

小心java 1.7。有一个错误。由rancidfishbreath发布的解决方案对于java 1.6来说是完美的,但是导致Swing应用程序永远不会退出java 1.7。在JDK 1.7下,你必须在Event Dispatch线程中安装新的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);

}

}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值