Java JTextField从一个类输出到另一个类?

时间:2013-05-22 22:03:54

标签: java jtextfield

这是一个非常简单的程序,我需要帮助。我正在尝试显示在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);
          }


       }





    }

3 个答案:

答案 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())