在继续代码之前等待TextField输入

时间:2016-04-05 09:50:38

标签: java

我有一个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

我必须为端口分配值'0',否则代码不会编译,因为变量不会被初始化。

由于TextField在程序开头为空,getText()不会得到值,这就是端口保持为0的原因。

在代码继续之前有没有办法等待输入?

2 个答案:

答案 0 :(得分:0)

找到解决方案,这就是我解决它的方法:

我在public String value = ""; public void createInput() { buttonInput.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { value = textfieldInput.getText(); } }); } 之外创建了一个全局变量:

public static void main(String[] args)

命名为'value'。

在我的while(frame.value.equalsIgnoreCase("")) { try { System.out.println("waiting..."); Thread.sleep(1000); } catch(InterruptedException ie) { System.out.println("interrupted"); } } 中我声明了以下内容:

def increase[T: Numeric](x: T) = (y: T) => { 
    require( implicitly[Numeric[T]].gt(x , 0.asInstanceOf[T] ) )
    if ( implicitly[Numeric[T]].gt(y , 0.asInstanceOf[T] ) )  
        implicitly[Numeric[T]].plus(x, y)
    else                
        increase[T](x)(implicitly[Numeric[T]].abs(y))
}

val inc =  increase[Int] _

println(inc(5)(-1))

我每次使用它时都必须清除变量'value',因此它将再次为空以备将来使用。

我不是解决问题的最佳方式,但它对我有用。

答案 1 :(得分:0)

下面的代码可能会让您了解更有效的方法来获得焦点丢失的价值。

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);
相关问题