@pshevnin

Как дождаться закрытия JFrame в swing?

Добрый день, код:
public static void main(String args[]){
       Data data = new Data();
       StartForm startForm = new StartForm(data);
       Game game = new Game(data);
       game.start();
}

public StartForm(Data data){
        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);// posice okna centrum

        JLabel nickLabel = new JLabel("nickname:");
        nickLabel.setBounds(400/2 - 60/2,140,60, 40);
        frame.add(nickLabel);

        JTextField nickTField = new JTextField();
        nickTField.setBounds(400/2 - 200/2,170,200, 20);
        frame.add(nickTField);

        JLabel roomLabel = new JLabel("room number:");
        roomLabel.setBounds(400/2 - 90/2,180,90, 40);
        frame.add(roomLabel);

        JTextField roomTField = new JTextField();
        roomTField.setBounds(400/2 - 200/2,210,200, 20);
        frame.add(roomTField);

        JButton startButton = new JButton("Start");
        startButton.setBounds(400/2 - 100/2,400,100, 40);
        frame.add(startButton);//adding button in JFrame

        startButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                try {
                   
                    String nickname = nickTField.getText();
                    int roomNumber = Integer.parseInt(roomTField.getText());

                    data.setNickname(nickname);
                    data.setRoom(roomNumber);
                    frame.dispose();

                }catch (Exception ex){
                    errorLabel.setText("Error: something is wrong");
                    errorLabel.setForeground(Color.RED);
                }

            }
        });

        frame.setSize(400,500);//400 width and 500 height
        frame.setLayout(null);//using no layout managers
        frame.setVisible(true);//making the frame visible
        frame.setIconImage(icon.getImage());
        frame.setResizable(false);
    }


Проблема в том, что после создания экземпляра класса StartForm() код main идет дальше не дожидаясь закрытия формы, таким образом в класс Game передаётся пустой экземпляр data. Я не понимаю как правильно это решить
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Использовать диалоговое окно или запускать Game из обработчика нажатия кнопки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект