有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java等待按钮点击继续程序

一般来说,我对GUI是新手。我想做一个,让用户输入。之后,应在对象中进一步处理该输入

这是我的objectClass

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

我的带有main和gui方法的MainClass

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) 个答案

  1. # 1 楼答案

    你必须让方法等待——所有方法一旦完成就会返回

    这个(gui)将在设置gui(即添加按钮)后返回

    因此,添加一个

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

    在方法的末尾。这样,当帧被释放时(输入值并按下按钮后),方法将退出

    然而,这种方式是危险的编程——没有明显的原因而搁置一种方法

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