Зависание фрейма при вызове другого класса - 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();
            }
        });

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы