1

レイアウトと単一のボタンを持つクラスがあります。関数でブール値が変更されたかどうかを検出できる組み込みのメソッドまたは機能があるかどうか疑問に思っていました。私は他のブール値の混乱でそれを行うことができましたが、よりエレガントな方法を探していました. 「オブザーバー」と関係があると思いますが、完全にはわかりません。

コードの簡略版は次のとおりです。

Class checker{

 boolean test1 = true;
 boolean test2 = true;

checker(){

checkNow.addActionListener(new ActionListener() {            
public void actionPerformed(ActionEvent e)
{   

//code to manage, and possibly change the value of the booleans test1 and test2.
//is there any built in function in java where i can test to see if the value of the booleans was changed in this actionListener function?

}
}}); 

}
4

3 に答える 3

6

[is] 関数内でブール値が変更されたかどうかを検出できる組み込みのメソッドまたは機能がありましたか?

booleanセッターを使用して変数へのアクセスをカプセル化することで、これを行うことができます。

private boolean test1 = true;
private boolean test2 = true;

private void setTest1(boolean newTest1) {
    if (newTest1 != test1) {
        // Do something
    }
}

private void setTest2(boolean newTest2) {
    if (newTest2 != test2) {
        // Do something
    }
}

これらの変数のすべての割り当てを と の呼び出しに置き換えて、setTest1setTest2の変更を確実に検出しtest1ますtest2

于 2012-10-04T02:12:35.420 に答える
1

1) ブール値を非公開にする
2) ゲッターとセッターを介してアクセスする
3) セッターで: 'if (this.val!=newVal) notify()'

于 2012-10-04T02:14:45.580 に答える
0

1つのオプション(やり過ぎかもしれません)は、の値の変更に関心のあるコンポーネントであり、これらのプロパティの値が変更されたときにリッスンするようにaとregisterをtest1実装test2します。PropertyChangeListener

これがチュートリアルです。

于 2012-10-04T03:29:26.817 に答える