[英]getSelectedRow on a combobox cell editor
我需要一個CombobBox上的偵聽器,它是JTable上的cellEditor。 該偵聽器必須給我新的選定值和行ID。
我下面的解決方案的問題是列表器鏈接到所有行,因此當我在一行中更改一個ComboBox值,然后移到另一行(具有不同的組合值)時,會引發一個事件,但是所選行尚未改變。 我如何擺脫這種情況?
謝謝
column = jTableCheck.getColumnModel().getColumn(9);
JComboBox comboBox = new JComboBox(comboGenre);
comboBox.addItemListener(new ItemListener(){
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
int row = jTableCheck.getSelectedRow();
Popup.info(e.getItem() + " SELECTED, row="+row);
}
}
});
column.setCellEditor(new DefaultCellEditor(comboBox));
不要在組合框上使用ItemListener。
相反,您應該使用TableModelListener
。 只要TableModel中的數據發生更改,就會觸發一個事件。 因此,您將TableModelListener添加到JTable的TableModel中。
TableModelEvent將提供更改的單元格的行/列。 您可以從TableModel獲取更改的值。
或者,也許您想使用類似於TableModelListener的Table Cell Listener ,不同的是,僅在實際更改值並且使用Action進行處理時才調用代碼。
實際上,我已經在另一個表上使用了TableCellListener,但是忘記了!
我在這里找到了一個有用的類: http : //tips4java.wordpress.com/2009/06/07/table-cell-listener/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.