2

このように宣言したプロパティ値を取得する方法はありますか?

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
}
4

2 に答える 2

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; 
}
于 2012-05-04T14:57:45.647 に答える
0

できることは、 Component.setName() を使用して、少なくとも文字列をコンポーネントに保存することです。

于 2012-05-04T14:58:32.193 に答える