0

最後の列にコンボボックスがある4列のjtableがあります。

サンプルコード

String[] colNames = {"Name","Email","Department","Status"};
TableModel model = new DefaultTableModel(colNames,200);
table.setModel(model);

TableColumn statusCol = table.getColumnModel().getColumn(3);
comboBox = new JComboBox();
comboBox.addItem("Approver");
comboBox.addItem("Senior Manager");

statusCol.setCellEditor(new DefaultCellEditor(comboBox));

ここで、comboBox には承認者とシニア マネージャーの 2 つのオプションがあります。テーブルにシニア マネージャーが 1 人しかいないという条件を追加する方法を探しています。

4

2 に答える 2

1

一貫した状態で開始すると仮定するとTableModel(たとえば、上級管理職が 1 人しかいない場合)、目標は、列 3 のセルが編集されたときにその不変性を維持することです。難しいのは、リスナーがTableModel関連する変更を確認できるようにすることです。1 つのアプローチは、@Guillaume Polet によるこのに示されているように、オブジェクト マネージャーを使用することです。マネージャーは、管理対象オブジェクトの状態が変化したときにPropertyChangeEvent、リッスンに通知するために を起動します。TableModelは、 を介して、 自体などのTableModel登録済みの に通知します。TableModelListenerJTablefireTableRowsUpdated()

于 2013-03-18T18:37:40.330 に答える
1

ドメイン内でこれを処理し (たとえば、tableModel にロードされたデータを維持する場所に制約を追加する)、そこにいるシニア マネージャーの数を制限する必要があります。これはビジネス ロジックです。GUI に実装しないでください。

于 2013-03-18T12:29:15.273 に答える