我知道使用线程比使用c#DoEvents()更有效,但我仍然想知道java中是否存在等效函数。我用Google搜索,但我找不到任何东西。
答案 0 :(得分:2)
您可以使用Thread.yield()
,这是java对应物,可以自愿放弃对处理器的控制。
答案 1 :(得分:1)
您可以使用EventQueue.invokeLater()
在所有待处理事件后附加Runnable
。这个结果与您放在DoEvents()
方法中的代码之前的C#Runnable.run()
类似。
See Java documentation for EventQueue
例如,如果要让所有GUI控件失去焦点并丢失要执行的焦点事件,可以使用以下代码:
@Override
public void windowClosing(WindowEvent e){
// Clear the focus to allow last changes to be noted.
KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
// We want to let other events (e.g. lost focus) run before we start closing.
EventQueue.invokeLater( new Runnable() {
@Override public void run() {
// Do actual closing...
}
});
}
答案 2 :(得分:0)
它被称为事件循环。这个article显示了如何在Java中的UI组件中处理事件。