Java:将 TextField 保存到另一个 class 中使用的字符串
Java: Saving TextField to a string used in another class
public void actionPerformed(ActionEvent e) {
s = tf1[0].getText();
}
我想将我从 tf1[0].getText();
获得的文本输入保存到 String s
并在我的 main 或另一个 class 中调用 s
,但我得到 null回来代替。有没有办法在另一个 class 中调用 s
?
这是剩余的代码:
public class GUI {
static String s;
public static void gui(){
{
try{
String File_Name="C:/Users/Ray/Desktop/test.txt";
ReadFile rf=new ReadFile(File_Name);
JFrame f1=new JFrame("Maintest");
JPanel p1=new JPanel();
JPanel p2=new JPanel();
final String[] aryLines=rf.OpenFile();
final JTextField tf1[];
tf1=new JTextField[22];
JButton []b1=new JButton[6];
String bNames="OK";
final JTextField tf2[]=new JTextField[aryLines.length];
f1.setSize(200,450);
JLabel l1[]=new JLabel[20];
for ( int i=0; i < aryLines.length; i++ )
{
b1[i]=new JButton(bNames);
l1[i]=new JLabel("Enter Serial# for "+ aryLines[i]);
p1.add(l1[i]);p1.add(tf1[i] = new JTextField());p1.add(b1[i]);
}
p1.setLayout(new BoxLayout(p1,BoxLayout.PAGE_AXIS));
f1.add(p1,BorderLayout.WEST);
b1[0].addActionListener(new ActionListener(){
private String s2;
public void actionPerformed(ActionEvent e)
{
s=tf1[0].getText();
System.out.print(s);
}
});
f1.show();
}
catch(Exception e)
{
System.out.print(e);
}
}
}
}
对此有几个解决方案。您可以使 "s" 成为一个基于 class 的变量,它可以像这样从对象实例中检索:
public String getS(){
return this.s;
}
这里:
public void actionPerformed(ActionEvent e) {
this.s = tf1[0].getText();
}
然后在你的另一个需要 s
的 class 中,你应该实例化包含 s
的 Class 并调用:
String s2 = instantiatedObject.getS();
如果你觉得有点冒险,你可以让 "s" 成为一个静态变量,你可以在实例化包含 "s":[=16= 的 class 的任何地方调用它]
String s2 = instantiatedObject.s;
public void actionPerformed(ActionEvent e) {
s = tf1[0].getText();
}
我想将我从 tf1[0].getText();
获得的文本输入保存到 String s
并在我的 main 或另一个 class 中调用 s
,但我得到 null回来代替。有没有办法在另一个 class 中调用 s
?
这是剩余的代码:
public class GUI {
static String s;
public static void gui(){
{
try{
String File_Name="C:/Users/Ray/Desktop/test.txt";
ReadFile rf=new ReadFile(File_Name);
JFrame f1=new JFrame("Maintest");
JPanel p1=new JPanel();
JPanel p2=new JPanel();
final String[] aryLines=rf.OpenFile();
final JTextField tf1[];
tf1=new JTextField[22];
JButton []b1=new JButton[6];
String bNames="OK";
final JTextField tf2[]=new JTextField[aryLines.length];
f1.setSize(200,450);
JLabel l1[]=new JLabel[20];
for ( int i=0; i < aryLines.length; i++ )
{
b1[i]=new JButton(bNames);
l1[i]=new JLabel("Enter Serial# for "+ aryLines[i]);
p1.add(l1[i]);p1.add(tf1[i] = new JTextField());p1.add(b1[i]);
}
p1.setLayout(new BoxLayout(p1,BoxLayout.PAGE_AXIS));
f1.add(p1,BorderLayout.WEST);
b1[0].addActionListener(new ActionListener(){
private String s2;
public void actionPerformed(ActionEvent e)
{
s=tf1[0].getText();
System.out.print(s);
}
});
f1.show();
}
catch(Exception e)
{
System.out.print(e);
}
}
}
}
对此有几个解决方案。您可以使 "s" 成为一个基于 class 的变量,它可以像这样从对象实例中检索:
public String getS(){
return this.s;
}
这里:
public void actionPerformed(ActionEvent e) {
this.s = tf1[0].getText();
}
然后在你的另一个需要 s
的 class 中,你应该实例化包含 s
的 Class 并调用:
String s2 = instantiatedObject.getS();
如果你觉得有点冒险,你可以让 "s" 成为一个静态变量,你可以在实例化包含 "s":[=16= 的 class 的任何地方调用它]
String s2 = instantiatedObject.s;