等待按钮单击以继续执行程序

时间:2018-10-07 15:25:44

标签: java swing jframe actionlistener

一般来说,我是GUI的新手。我想制作一个,要求用户输入。此后应在对象中进一步处理此输入。

这是我的objectClass

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

我的MainClass使用main和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 :(得分:1)

您必须让方法等待-完成后所有方法都将返回。

设置了gui(即添加按钮)后,该(gui)将返回。

因此添加一个

while(frame.isDisplayable()) try { Thread.sleep(1000); } catch (Exception e) {}
方法末尾的

。这样,在放置框架时(输入值并按下按钮后),方法将退出。

但是,这种方式很危险,编程-没有明显的理由阻止方法。

但是,如果这是您想要的,这就是您必须要做的。