有没有办法获得我们这样声明的属性值?
JButton button = new javax.swing.JButton(){
public int value=0;
}
button.addActionListener(listener);
//in action listener
public void ActionPerformed(ActionEvent evt){
JButton btn = (JButton)evt.getSource();
btn.value =2; //error
}
答案 0 :(得分:4)
您无法在实例本身之外访问匿名类的属性/方法。
原因是编译器知道btn
是JButton,而不是你的扩展,并且你不能转换为此扩展,因为它没有名称。
您需要在单独的文件中创建内部类或类并实例化它,例如:
static class MyButton extends JButton {
public int value=0;
}
// ....
MyButton btn = new MyButton();
btn.addActionListener(listener);
// ....
@Override public void actionPerformed(ActionEvent evt){
MyButton btn = (MyButton)evt.getSource();
btn.value = 2;
}
答案 1 :(得分:0)
您可以使用Component.setName()至少为您的Component保存一个字符串。