0

次の JComboBox があります。

JComboBox cbxUf;

そして、次の JTable

JTable tblObjetos;

次の構造があります。

------------------------
| Nome       | UF      |
------------------------
| Nome 1     | AC      |
| Nome 2     | AC      |
| Nome 3     | PE      |
------------------------

選択した行を tblObjetos から cbxUf の selectedItem に渡す必要があるため、次のイベントを含む tblObjetos に MouseListener を追加しました。

public void mouseClicked(MouseEvent evt){
    int col = tblObjetos.getSelectedColumn();
    int row = tblObjetos.getSelectedRow();
    cbxUf.setSelectedItem(tblObjetos.getModel().getValueAt(row, col));
}

選択した行を cbxUf に取り込むことができますが、UF 列をクリックした場合のみです。テーブルの左側をクリックしても、selectedItem はまったく変化しません。

私は何か間違ったことをしていますか?これに代わるものはありますか?

ありがとう!

4

1 に答える 1

1
cbxUf.setSelectedItem(tblObjetos.getModel().getValueAt(row, col));

私の推測では、comboBox には 2 番目の列の値しか含まれていないため、最初の列をクリックしたときに選択するオブジェクトはありません。たとえば、最初の行をクリックすると、選択した項目を「Nome 1」に設定しようとします。この値はコンボ ボックスに存在しないため、選択は変更されません。本当に欲しいのは「AC」を選択することです。

コードは次のようになります。

cbxUf.setSelectedItem(tblObjetos.getModel().getValueAt(row, 1));

また、MouseListener を使用する代わりに、ListSelectionListener をテーブル選択モデルに追加します。

于 2013-06-29T21:01:39.443 に答える