从ActionListener调用方法

时间:2014-04-30 23:27:53

标签: java

我想要一个按钮,按下该按钮时,将调用一个方法。 这是一些代码

public class Tester extends JPanel {              
    public void paintComponent(Graphics g){
        super.paintComponent(g);            
        g.fillRect(10, 10, 10, 10);

    }
    //The method which I wand invoke but can't, I don't know why.
    void setWidth(){
        //width -= 10 ;
        repaint();
    }

    public static void main(String[] args) {
            //Here some JFrame...
            Tester paint = new Tester();
            frame.add(paint);
            JButton click = new JButton("Click");

            click.addActionListener(new ActionListener(){

                @Override
                public void actionPerformed(ActionEvent e) {
                    paint.setWidth();//Here I Want invoke that method
                }

            });
    }
}

我希望ActionListener将调用方法setWidth(),但它不会。不知道为什么。

1 个答案:

答案 0 :(得分:0)

paint变量不在anonyomous ActionListener类的范围内尝试更改paint类以使其实现ActionListener接口并使其实例成为“Click”按钮的动作侦听器,同时将按钮附加到面板实例,如下所示:

public class Tester extends JPanel implements ActionListener {              

   @Override
   public void actionPerformed(ActionEvent e) {
         setWidth();
   }

    public static void main(String[] args) {
            //Here some JFrame...
            Tester paint = new Tester();            
            frame.add(paint);

            JButton click = new JButton("Click");
            paint.add(click);
            click.addActionListener(paint);

    }
}