JButton添加属性

时间:2012-05-04 14:55:54

标签: java swing jbutton

有没有办法获得我们这样声明的属性值?

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
}

2 个答案:

答案 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保存一个字符串。