无法使用我在ActionListener类中创建的按钮

时间:2017-12-24 19:53:32

标签: java user-interface actionlistener

我正在创建一个简单的窗口,必须有一个文本字段和一个按钮。

public class Find_Suspect_Window extends JFrame{

   private JPanel panel=new JPanel();
   private JTextField findName = new JTextField("Enter the name");
   private JButton findButton = new JButton("Find");

   public Find_Suspect_Window() {

       panel.add(findName);
       panel.add(findButton);

       this.setContentPane(panel);

       FindListener f = new FindListener();
       mouse m = new mouse();
       findName.addMouseListener(m);
       findButton.addActionListener(f);


       this.setVisible(true);
       this.setSize(300, 100);
       this.setResizable(false);
       this.setLocationRelativeTo(null);
       this.setTitle("Find Suspect");
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


   }

}

之后我在同一个实现ActionListener的类文件中创建了一个类,所以我可以让按钮做一些事情。

class FindListener implements ActionListener{


   public void actionPerformed(ActionEvent e){

       if(e.getSource() == findButton) {

           String n = findName.getText();

       }

   }
}

我在这里得到一个错误,指出findButton无法解析为变量而findName无法解析。我知道它们不属于同一个类但我需要使用该按钮和该字段来完成所有必要的操作以使按钮正常工作。

我错过了什么吗?有什么东西我必须改变或添加一些东西才能起作用吗?

2 个答案:

答案 0 :(得分:0)

如果你完全描述了一切,那么应该没有任何问题。请参阅以下示例:

class A extends JFrame {

    private JButton button = new JButton ();
    private int a;

    {
        button.addActionListener (new B ());
    }

    class B implements ActionListener {

        @Override
        public void actionPerformed (ActionEvent e) {
            if (e.getSource () == button) {
                System.out.println (a);
            }
        }

    }

}

答案 1 :(得分:-1)

没关系。我在主类的边界之外创建了类。这就是为什么它没有认识到变量。