これは私の側からの誤解に違いありませんが、私には次のようなものがあります
。JcomboboxにItemListenerを追加しました。
アイテムリスナーで、イベントがItemSelectedタイプであるかどうかをチェックインします。
そうである場合は、JTextPaneの値を更新します。問題は、次のように機能すること
です。jcomboboxで新しい値をクリックしても、jtextfieldで何も変更されません。jtextfieldなどの別のコンポーネントをクリックする必要があります。その後、jtextfieldが更新されます。
イベントの変更がitemlistenerコードにディスパッチされるように、フォーカスをjcomboboxから削除する必要があるようです。
これはそれが機能することになっている方法ですか、それとも私は何か間違ったことをしていますか?フォーカスを外さずにイベントを処理することは可能ですか?
更新:このコードとメソッドupdateJTextPaneは、コンボから新しい値を選択したときではなく、別のコンポーネントをクリックした後に呼び出されます。つまり、コンボの値は「1」です。ドロップダウンリストをクリックして、「2」をクリックします。現在選択されているアイテムは「2」になります。この時点では、私のメソッドは呼び出されていません。2番目のコンボボックスをクリックすると、2番目のコンボにフォーカスがあり、メソッドupdateJTextPane()が呼び出されます。なんで?
更新2:
//Code from Netbeans generator
JComboBox myCbx = new javax.swing.JComboBox();
myCbx.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
myCbx.setName("myCbx"); // NOI18N
//My ItemListener
class myItemListener implements ItemListener{
public void itemStateChanged(ItemEvent ie) {
if (ie.getStateChange() == ItemEvent.SELECTED) { // Item was just selected
updateJTextPane();
}
}
}
//add item listener to combo
myCbx.addItemListener(new myItemListener());
更新3:これがわからない方法で重要な場合、内部クラスmyItemListenerが同じJDialog内のさらに5つのコンボボックスに追加されますありがとうございます