我是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


按此顺序。我想我输入的速度太慢了,如何让程序等待我呢?

最佳答案

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

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

所以加一个

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


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

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

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

关于java - 等待按钮单击以继续执行程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52690009/

10-12 00:24
查看更多