0
我已经增加了一个JRadioButton
到JPanel
和处理其鼠标单击事件如下Java
代码处理并发事件的Java Swing事件处理
JRadioButton offline = new JRadioButton();
offline.setText("Offline Mode");
modePanel.add(offline);
modePanel.setLayout(new GridLayout(2,1));
offline.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
offlineClicked(evt);
}
});
功能offlineClicked
需要大约四周1分钟是完全执行。 并且直到它的执行完成,没有其他操作执行被处理。
此后执行的所有操作似乎进入事件队列并在offlineClicked
完成执行时处理FIFO。
由于此,UI 似乎已进入挂起状态。
可以做什么来使摆动控制器事件同时发生,而不是等到最后才完全执行。
标准技术是永远不要在事件线程上做应用程序工作。 始终在单独的处理线程上运行应用程序工作,以便UI保持响应。有关此主题的完整书籍和教程,请执行一些Google搜索。从Oracle的教程开始。 –
您正在寻找按钮上的'SwingWorker'和'ActionListener'; [例如('SwingWorker')](http://stackoverflow.com/questions/20944719/how-to-use-swingworker/20945255#20945255) – MadProgrammer
每次点击处理都很重要吗?或者你想要点击被忽略,直到完成第一次点击的初始过程? - 在实现并发解决方案时(即使使用SwingWorker等),您必须考虑到这一点。 – Fildor