JTable - 仅限TableModelEvent更改的值

时间:2016-03-11 11:10:05

标签: java swing listener cells tablemodel

问题在于,即使我将单元格值更改为与更改相同的精确值。因此,例如,如果我双击一个单元格并且不改变其值,我的程序就会将其写入服务器。

如何才能使仅更改其值的单元格,例如(x -> y)写入服务器。 (x -> x)什么都不做。

以下代码:

        Misc_Table.getModel().addTableModelListener(new TableModelListener() {

          public void tableChanged(TableModelEvent e) {

             int row = e.getFirstRow();
             int col = e.getColumn();

              Doo.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent e) {

                    try{
                    Object value = model.getValueAt(row, col);

                        int selected = (int) Functions_ComboBox.getSelectedIndex();

                        if(selected == 0){
                            String val = (String) value;
                            int int_Val = Integer.parseInt(val);
                            BackEnd.WriteMultiple_16Bit(unitID, row, int_Val , 1);                      
                        }
                    } catch (NumberFormatException e1) {
                        JOptionPane.showMessageDialog(MISC,"Wrong number format.");
                    } catch (Exception e2) {    
                    }
                }

              });   
          }
        }); 

1 个答案:

答案 0 :(得分:1)

您可以使用Table Cell Listener

TableCellListener取代了TableModelListener,只会在数据实际更改时生成事件,而不会在编辑器停止时生成事件。您只需提供在数据更改时调用的Action