繁体   English   中英

从ActionListener调用方法

[英]Invoke method from ActionListener

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

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() ,但不会。 不知道为什么。

paint变量不在匿名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);

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM