Java JTable-仅更改的TableModelEvent值

Java JTable-仅更改的TableModelEvent值,java,swing,listener,cells,tablemodel,Java,Swing,Listener,Cells,Tablemodel,问题是,即使我将单元格值更改为它作为更改计算的相同精确值。例如,如果我双击一个单元格,并且不改变它的值,我的程序将继续将其写入服务器 我如何才能使其仅更改了值的单元格,例如(x->y)写入服务器(x->x)什么也不做 代码如下: Misc_Table.getModel().addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) {

问题是,即使我将单元格值更改为它作为更改计算的相同精确值。例如,如果我双击一个单元格,并且不改变它的值,我的程序将继续将其写入服务器

我如何才能使其仅更改了值的单元格,例如
(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) {    
                    }
                }

              });   
          }
        }); 
您可以使用


TableCellListener
将替换TableModelListener,并且仅在数据实际更改时生成事件,而不是在编辑器停止时生成事件。您只需提供一个
操作
,以便在数据更改时调用。

在写入后端之前,必须将GUI中的int\u Val与当前值进行比较。您必须将所有当前值保存在一个二维数组中,这样才能按行和列获取当前值。谢谢,它可以工作。但我怎么能用这个按钮呢?因为我需要按下按钮来写新的值。按下按钮发送所有生成的事件,而不是最后一个。当您按下按钮时,编辑器仍处于活动状态。仅当您在表格中的新单元格上单击制表符或单击时,表格才会停止编辑。您需要停止编辑单元格才能保存值。查看一些解决方案。