JTextField不读取用户输入的数据

时间:2014-03-14 18:49:59

标签: java swing

这里我正在尝试创建一个Swing Java应用程序,我从String获取JTextField t1并比较它是否与文本文件中的任何其他字符串匹配,然后显示匹配的String中的JTextField t2。但是,JTextField t1甚至没有读取用户的输入(我甚至尝试过显示用户的输入) * 注意: - *'main'或该程序的GUI没有问题。

JButton b1;
JTextField t1,t2;

    public void actionPerformed(ActionEvent ae){try{
    String a=t1.getText();
    String search="";
    try{
        if(a.length()!=0){
           search=atomicnumber(a);
           t2.setText(a);}
        }catch(Exception x){System.out.println("Error");}

}catch (Exception x) {System.err.println("An Unexpected error encountered."+x);}
}
public static String atomicnumber(String a){try{
              boolean found=false;
              File atmno=new File("C:/Users/DELL/Periodic/text/AtomicNumber.txt");
              String e;
                  Scanner sc=new Scanner(atmno);
             while((e = sc.nextLine()) != null){
                  if (e.startsWith(a)){
                found=true;
                return e;//break;
                }
                  return("0");}}catch(IOException x){}
return("0");}
}

3 个答案:

答案 0 :(得分:3)

创建实例变量 a 并在方法actionPerformed中设置此变量,并在另一种方法atomicnumber中使用此实例变量。

您需要将方法atomicnumber设置为非静态才能访问它。

答案 1 :(得分:0)

您创建一个实例变量。你需要让它“可见”。你的startsWith方法在哪里?确保传递正确的参数。

伪代码

class SomeClass {
    var1 < THIS IS an instance method accessible to any method in that class

method1 {
    var2

}

method2 {
   something.doSomeMethodOn(var2) <<<<< THIS is NOT accessible
   something.doSomeMethodON(var1)<<< THIS IS!
}

答案 2 :(得分:0)

在actionperformed方法中,您将在另一个范围内创建第二个 String a variable :该函数的范围。因此,您不是将值初始化为静态String a,而是初始化为String a(函数范围)。在atomicNumber()函数中,您引用静态String一个未初始化的变量... 尝试以下解决方案,更改:

字符串a = t1.getText();

a = t1.getText();