我正在编写一个充当服务器和客户端的Java程序。排除不相关的位,它有三个类:Main,Server和Client。 Main只设置一个菜单并包含主要方法。服务器和客户端分别保存服务器和客户端的算法。如何从JButton调用繁重的算法ActionListener
我想要做的是从服务器和客户端类和它们的GUI调用算法,具体取决于按下按钮。该代码调用服务器目前看起来是这样的:
serverButton = new JButton();
serverButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
server.showGUI();
server.run();
}
});
的问题是,server.run()
连续运行了相当长的一段时间,是很多繁重的工作。这错误地出现了GUI,这从我的理解是因为我正在从EDT调用该方法。
如何从主线程调用此方法?我是否需要创建一个SwingWorker
并将其留在server.run()的末尾?
['SwingWorker'](https://docs.oracle .com/javase/tutorial/uiswing/concurrency/worker.html)是一种方法;另一种方法显示[这里](http://stackoverflow.com/a/3245805/230513)。 – trashgod