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

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

Похожие вопросы
Сбер Москва
от 300 000 до 350 000 ₽
DIGITAL SECTOR Краснодар
от 250 000 до 450 000 ₽
Сбер Санкт-Петербург
До 350 000 ₽