这里我正在尝试创建一个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");}
}
答案 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();