Java 等待按钮单击以继续程序
一般来说,我对GUI是新手。我想做一个,它要求用户输入。之后,应在对象中进一步处理此输入 这是我的Java 等待按钮单击以继续程序,java,swing,jframe,actionlistener,Java,Swing,Jframe,Actionlistener,一般来说,我对GUI是新手。我想做一个,它要求用户输入。之后,应在对象中进一步处理此输入 这是我的objectClass public class AnObject { private String property; public AnObject(){} public String getProperty() {return property;} public void setProperty(String property)
objectClass
public class AnObject {
private String property;
public AnObject(){}
public String getProperty() {return property;}
public void setProperty(String property) {this.property = property;}
}
MyMainClass
带有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) {}
在方法的末尾。这样,当帧被释放时(输入值并按下按钮后),方法将退出
然而,这种方式是危险的编程——没有明显的原因而搁置一种方法
但是,如果这是您想要的,这就是您必须做的。不需要在
main()
中输入最后一行。调用操作侦听器时,打印输出已经发生。监听器也是进一步处理输入(或者更好地调用函数)的地方。将JFrame
改为JOptionPane
(或模式对话框)。然后,代码将等待对话框或选项窗格关闭。有关使用JOptionPane
的示例,请参阅。