У меня есть класс WorkerThread, который заботится о потоках и текущем / основном потоке графического интерфейса. я поместил свое приложение с графическим интерфейсом в метод construct () WorkerThread, когда событие запускается, чтобы запустить XXXServer, тогда все потоки активируются, и графический интерфейс работает плавно, без остановки. посмотри.
/ ** * Событие действия * * @see java.awt.event.ActionListener # actionPerformed (java.awt.event.ActionEvent) * /
public void actionPerformed (ActionEvent ae) {
log.info («actionPerformed begin ...» + ae.getActionCommand ());
try {
if (ae.getActionCommand().equals(btnStart.getText())) {
final int portNumber = 9990;
try {
WorkerThread workerThread = new WorkerThread(){
public Object construct(){
log.info("Initializing the Server GUI...");
// initializing the Server
try {
xxxServer = new XXXServer(portNumber);
xxxServer.start();
btnStart.setEnabled(false);
} catch (IOException e) {
// TODO Auto-generated catch block
log.info("actionPerformed() Start button ERROR IOEXCEPTION..." + e.getMessage());
e.printStackTrace();
}
return null;
}
};workerThread.start();
} catch (Exception e) {
log.info("actionPerformed() Start button ERROR..." + e.getMessage());
e.printStackTrace();
}
} else if (ae.getActionCommand().equals(btnStop.getText())) {
log.info("Exit..." + btnStop.getText());
closeWindow();
}
} catch (Exception e) {
log
.info("Error in ServerGUI actionPerformed==="
+ e.getMessage());
}
}