Java 等待TextField输入,然后继续执行代码
我有一个图形用户界面,它有一个Java 等待TextField输入,然后继续执行代码,java,Java,我有一个图形用户界面,它有一个TextField,我的代码如下所示: int port = 0; try{ port = Integer.parseInt(frame.textfieldInput.getText()); } catch(NumberFormatException npe) { System.out.println("Error! parse exception"); } System.out.printl
TextField
,我的代码如下所示:
int port = 0;
try{
port = Integer.parseInt(frame.textfieldInput.getText());
}
catch(NumberFormatException npe)
{
System.out.println("Error! parse exception");
}
System.out.println("The Port is " + port); //is 0
while(frame.value.equalsIgnoreCase(""))
{
try
{
System.out.println("waiting...");
Thread.sleep(1000);
}
catch(InterruptedException ie)
{
System.out.println("interrupted");
}
}
我必须将值“0”分配给端口,否则代码将无法编译,因为变量将无法初始化
因为TextField
在程序开始时是空的,getText()
不会获得值,这就是端口保持为“0”的原因
有没有办法在代码继续之前等待输入?找到了解决方案,我就是这样解决的: 我在我的
ActionListener
之外创建了一个全局变量:
public String value = "";
public void createInput() {
buttonInput.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
value = textfieldInput.getText();
}
});
}
命名为“值”
在我的publicstaticvoidmain(String[]args)
中,我声明了以下内容:
int port = 0;
try{
port = Integer.parseInt(frame.textfieldInput.getText());
}
catch(NumberFormatException npe)
{
System.out.println("Error! parse exception");
}
System.out.println("The Port is " + port); //is 0
while(frame.value.equalsIgnoreCase(""))
{
try
{
System.out.println("waiting...");
Thread.sleep(1000);
}
catch(InterruptedException ie)
{
System.out.println("interrupted");
}
}
每次使用变量“value”时,我都必须清除它,这样它就可以再次为空,以备将来使用
这不是解决这个问题的最佳方法,但它对我很有效。下面的代码可能会让您了解如何更有效地利用focus lost
JFrame frame = new JFrame();
frame.setSize(50, 50);
TextField field = new TextField();
field.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
// continue from here
System.out.println(field.getText());
}
@Override
public void focusGained(FocusEvent e) {
// TODO Auto-generated method stub
}
});
frame.getContentPane().add(field);
frame.setVisible(true);
您可以将代码放入一个侦听器,该侦听器对文本字段的更改或按钮单击等进行操作。或者调用一个模式对话框(
JOptionPane
)。