簡體   English   中英

組合框單元格編輯器上的getSelectedRow

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM