猿问

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

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

为了调试Swing应用程序中的奇怪行为,我想用我自己的实现替换AWT EventQueue。

这可能吗?怎么样?

万一你有兴趣:

  • 实现将是一个围绕正常Eventqueue的简单包装器,进行一些日志记录。

  • 我想要调试的问题是一个TableCellEditor,它可以在一个小的演示应用程序中正常工作,但是当放入真正的应用程序时,由于某些事件,会立即调用stopCellEditing。我希望能够访问该活动,以便了解它的来源。


四季花海
浏览 510回答 3
3回答

牧羊人nacy

EventQueue有一个名为push()的方法,可以完全按照你想要的方式执行。这是一个小小的演示:public class QueueTest {     public static void main(String[] args) throws InterruptedException, InvocationTargetException {         EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();         eventQueue.push(new MyEventQueue());         EventQueue.invokeAndWait(new Runnable() {             public void run() {                 System.out.println("Run");             }         });     }     private static class MyEventQueue extends EventQueue {         public void postEvent(AWTEvent theEvent) {             System.out.println("Event Posted");             super.postEvent(theEvent);         }     }}

芜湖不芜

这可以。扩展EventQueue将为您提供所有AWTEvents的处理。您将如何处理所有事件。活动清单如下。[AWTEvent,BeanContextEvent,CaretEvent,ChangeEvent,ConnectionEvent,DragGestureEvent,DragSourceEvent,DropTargetEvent,FlavorEvent,HandshakeCompletedEvent,HyperlinkEvent,LineEvent,ListDataEvent,ListSelectionEvent,MenuEvent,NamingEvent,NamingExceptionEvent,NodeChangeEvent,Notification,PopupMenuEvent,PreferenceChangeEvent,PrintEvent,PropertyChangeEvent,RowSetEvent,RowSorterEvent ,SSLSessionBindingEvent,StatementEvent,TableColumnModelEvent,TableModelEvent,TreeExpansionEvent,TreeModelEvent,TreeSelectionEvent,UndoableEditEvent,UnsolicitedNotificationEvent]
随时随地看视频慕课网APP

相关分类

Java
我要回答