1

次のように定義された JCheckBox があります。

JCheckBox NewCB = new JCheckbox();
 NewCB.setSelected(false);
 NewCB.setMnemonic(KeyEvent.VK_C);
 NewCB.addItemListener(this);

このチェック ボックスは ItemLisener を使用しています。

public void itemStateChanged(ItemEvent e) {

    Object source = e.getItemSelectable();
if(source == NewCB) {TEST = "SELECTED"; System.out.println(TEST);}

}

プログラムの起動時に JFrame を起動します。この CheckBox をフレームに追加すると、正常に動作します。2 番目の JFrame を開いて、このチェック ボックスを 2 番目のフレームに追加すると、オブジェクト ソースが機能しなくなります。開いているフレームのチェック ボックス名をオブジェクト ソースに読み込ませるために必要な定義は他にありますか?

4

1 に答える 1

2

まず、コンポーネントを複数の親に追加することはできません。それがあなたの問題かどうかはわかりません。

チェックボックスの「名前」と呼んでいるものは、チェックボックスのプロパティではなく、チェックボックスを指す変数のプロパティです。このような変数が多数存在する可能性があるため、この違いは重要です。チェックボックスは、それを指す変数について何も知りません。

では、どうすれば問題を解決できるでしょうか。チェックボックスの「アクションコマンド」を設定して、次のことを確認できます。

 NewCB.setActionCommand("Fred");
 // ...
 if ("Fred".equals(((JCheckBox) source).getActionCommand())))
     // ...
于 2012-04-24T17:21:26.120 に答える