Зависание фрейма при вызове другого класса - Java
Формулировка задачи:
В классе1 есть один фрейм, на нем есть кнопка.
Когда нажимаю на кнопку, должен запускаться сервер в классе2, закрываться фрейм в классе1 и запускаться фрейм в классе2.
Нажимаю на кнопку, фрейм в классе1 закрывается, но класс ни на что не реагирует (останавливается на строчке сервера), сервер запускается, а фрейм в классе2 не запускается.
package Mode;
import Server.Server;
import javax.swing.*;
public class MainGUI{
public static void StartGUI(){
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
final JFrame MainFrame = new JFrame("Test");
MainFrame.setSize(400, 300);
final JPanel panel1 = new JPanel();
MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton запуститьСерверButton = new JButton("Запустить сервер");
panel1.add(запуститьСерверButton);
MainFrame.setVisible(true);
panel1.setVisible(true);
MainFrame.getContentPane().add(panel1);
запуститьСерверButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
MainFrame.setVisible(false);
new Server();
}
});
}
}package Server;
import javax.swing.*;
public class Server {
public Server(JFrame frame) {
new Server(0);
new ServerGUI().StartGUI();
}
}package Server;
import javax.swing.*;
public class ServerGUI {
public static void StartGUI(){
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
final JFrame ServerFrame = new JFrame("Test");
ServerFrame.setSize(400, 400);
final JPanel panel1 = new JPanel();
}
}Решение задачи: «Зависание фрейма при вызове другого класса»
textual
Листинг программы
запуститьСерверButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
MainFrame.setVisible(false);
new Server();
}
});