@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. Я не понимаю как правильно это решить
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Использовать диалоговое окно или запускать Game из обработчика нажатия кнопки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы