Дождитесь нажатия кнопки, чтобы продолжить программу - PullRequest
0 голосов
/ 07 октября 2018

Я новичок в GUI в целом.Я хотел сделать один, который попросит пользователя для ввода.Этот вход должен быть впоследствии обработан в объекте.

Это мой objectClass.

public class AnObject {
        private String property;
        public AnObject(){}
        public String getProperty() {return property;}
        public void setProperty(String property) {this.property = property;}
}

Мой MainClass с основным и gui метод:

public class MainClass {
        public static void main(String[] args) {
            AnObject anObject = new AnObject();
            gui(anObject);
            System.out.println(anObject.getProperty()); //always null
        }

        public static void gui(AnObject anObject){
            JFrame frame = new JFrame();
            JPanel panel = new JPanel();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
            JButton button = new JButton("ok");
            JTextField textField = new JTextField(20);
            panel.add(button);
            panel.add(textField);
            frame.add(panel);
            frame.setVisible(true);
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    anObject.setProperty(textField.getText());
                    System.out.println(anObject.getProperty()); //Input
                    frame.dispose();
                }
            });
        }
}

Мой вывод всегда ...

null
//input from gui

В этом порядке.Я думаю, что я слишком медленный на входе, как я могу заставить программу ждать меня?

1 Ответ

0 голосов
/ 08 октября 2018

Вы должны заставить метод ждать - все методы возвращаются после завершения.

Этот (gui) вернется, как только вы настроите графический интерфейс (то есть добавьте кнопку).

Так что добавьте

while(frame.isDisplayable()) try { Thread.sleep(1000); } catch (Exception e) {}

в конце метода.Таким образом, когда кадр расположен (после того, как вы введете значения и нажмете кнопку), метод завершится.

Этот способ, однако, является опасным программированием - удержание метода без видимой причины.

Но если это то, что вы хотите, то это то, что вы должны сделать.

...