我想要一个按钮,按下该按钮时,将调用一个方法。 这是一些代码
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()
,但它不会。不知道为什么。
答案 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);
}
}