如何在JTextField中访问用户输入?

时间:2017-05-30 05:15:14

标签: java swing jtextfield

对于学校项目,我正在编写一个程序,我需要从JTextField中检索用户输入。我已经尝试使用getText()方法,但它返回一个空字符串错误。

String s = input.getText();
    if(changeNum.equals("")){
        firstNum = s;
    }
    if(!changeNum.equals("")){
        secondNum = s;
    }

firstNum和secondNum都是字符串。返回的错误是:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String

这条线正在返回:

Double firstN = Double.parseDouble(firstNum);

我该怎么办?谢谢!

编辑:忘记添加该输入是我的JTextField的名称,以防令人困惑。

2 个答案:

答案 0 :(得分:0)

将所有变量更改为double(firstNum等)并将代码更改为:

注意:如果您不使用否定数字

double s = null;
 try{
      s =  Double.parseDouble(input.getText());
   }catch(NumberF... e){e.getMesssge();}
     if(s > 0){
       if(changeNum >= 0){
               firstNum = s;
        }
         else {
                secondNum = s;
           }
 }
  //if you have to convert it to String use :

String str =String.valueOf(your double variable);

答案 1 :(得分:0)

我喜欢这样做(一般意义上讲)。让我们说我有一个带有三个文本框的面板,我想获得每个文本框的值(每个代表一个不同的类型)。这就是我要做的事情:

import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.BoxLayout;

public class Panel extends JPanel
{
  JTextField         textBox;
  JTextField         intBox;
  JTextField         floatBox;
  JTextField         dblBox;

  public Panel()
  {
    textBox  = new JTextField("Hello");
    intBox   = new JTextField("10");
    floatBox = new JTextField("3");
    dblBox   = new JTextField("3.14");    

    this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    this.add(textBox);    
    this.add(intBox);
    this.add(floatBox);
    this.add(dblBox);
  }

  public String getText()
  {
    return textBox.getText();
  }

  public int getInt()
  {
    try
    {
      return Integer.parseInt( intBox.getText() );
    }
    catch(NumberFormatException execp) {  }
    return -1;
  }

  public float getFloat()
  {
    try
    {
      return Float.parseFloat( floatBox.getText() );
    }
    catch(NumberFormatException execp) {  }
    return -2.0f;
  }

  public double getDouble()
  {
    try
    {
      return Double.parseDouble( dblBox.getText() );
    }
    catch(NumberFormatException execp) {  }
    return -2.0;
  }
}

另一个选择是让Panel实现ActionListener和dblBox.addActionListener(this)。然后,只要您更改数字,解析数据,并在JTextField(如果投射会抛出异常)时写入错误消息,或者私有成员,您可以让JLabel从父级调用方法它成功了。然后使用getter来读取私有成员。