这是一个非常简单的程序,我需要帮助。我正在尝试显示在actionlistener内部的JTextField中输入的输入但是当我编译程序时,我得到一个错误,说“错误:找不到符号”指向此行 --String input = field.getText(); - 在第二个类。我猜它是因为它不能识别第一个类中的JTextField名称,但是如何让第二个类识别它呢?请帮助我尝试自己学习,是的,我很抱歉,谢谢你。
PS。它所要做的就是在第二个类的system.out.println中显示输入。
import java.awt.* ;
import java.awt.event.* ;
import java.sql.* ;
import java.util.* ;
import javax.swing.* ;
import javax.swing.border.* ;
import javax.swing.event.* ;
import javax.swing.table.* ;
class Test
{
public static void main(String[] args)
{
Test gui = new Test() ;
}
public Test()
{
JPanel panel1 = new JPanel(new BorderLayout(10,10));
JTextField field = new JTextField(22);
field.addActionListener(new FieldInputAction()) ;
panel1.add(field ,BorderLayout.NORTH);
JFrame f = new JFrame();
f.setTitle("TEST") ;
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
f.setSize(1000, 700) ;
f.setVisible(true) ;
f.setContentPane(panel1) ;
}
class FieldInputAction implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String input = field.getText();
System.out.println(input);
}
}
}
答案 0 :(得分:0)
JTextField被声明为私有。重写类Test,使其实现自己的ActionListener,然后将actionPerformed移动到类Test中,您的对象将在类Test范围内可见。
答案 1 :(得分:0)
原因是当您调用它时field
超出范围。由于它是在Test()
的花括号内(即“块”)声明的,因此只能在Test()
内访问。
解决此问题的最简单方法就是使field
成为实例变量。所以:
class Test
{
private JTextField field; //Add this line
public static void main(String[] args)
{
//etc.
field = new JTextField(22); //Note that we no longer declare it, only initialize it.
//etc.
答案 2 :(得分:0)
我会做以下事情:
class Test
{
private JTextField field; //declare interface components as private
private JPanel panel1;
private JFrame f;
private String input; //this is the input variable
public static void main(String[] args)
{
Test gui = new Test() ;
}
public Test()
{
panel1 = new JPanel(new BorderLayout(10,10));
field = new JTextField(22);
field.addActionListener(new FieldInputAction()) ;
panel1.add(field ,BorderLayout.NORTH);
f = new JFrame();
f.setTitle("TEST") ;
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
f.setSize(1000, 700) ;
f.setVisible(true) ;
f.setContentPane(panel1) ;
}
class FieldInputAction implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
input = field.getText();
//if this doesn't work encapsulate the fields. and use the method getfield() with getText()
System.out.println(input);
}
}
}
编辑:如果你想在另一个类中使用输入变量,只需封装字段并使用:system.out.println(“”+ Text.getInput())