jTable 中的文本字段比 ActionPerformed(java.awt.event.ActionEvent evt) 更好!

text field in jTable something better than ActionPerformed(java.awt.event.ActionEvent evt)!

大家好,希望你们一切顺利。今天我又遇到了一个问题,我正在使用 jTable 中的文本字段来编辑列,我使用 model.getValueAt(); 从一列和 model.setValueAt(); 到另一列,当我按 enter 键进行一些计算后,操作重播但有时不回复并且不更新更改所以我必须再次按下......我的代码看起来像这样:

private void txt_ActionPerformed(java.awt.event.ActionEvent evt){
 try {
        int viewRow = table.getSelectedRow();
        String id = (table.getModel().getValueAt(viewRow, 1).toString());

        String sql1 = "SELECT * FROM mydb.mytable_1 where ID1='"+id1+"'";
        dm.pst = dm.c.prepareStatement(sql1);
        dm.rs = dm.pst.executeQuery();
        if (dm.rs.next()) {
        float a = dm.rs.getFloat("mycolumn_1");
        float b = Float.parseFloat(model.getValueAt(viewRow, model.getColumnCount()-10).toString());
        float c = Float.parseFloat(model.getValueAt(viewRow, model.getColumnCount()-9).toString());
        String d = model.getValueAt(viewRow, model.getColumnCount()-8).toString();

        float e = 0;
        switch (d) {
            case "U":case "1":e = 0;break;
            case "W":case "2":e = 7;break;
            case "X":case "3":e = 10;break;
            case "Y":case "4":e = 14;break;
            case "Z":case "5":e = 20;break;
            default:System.err.println("Error..");break;
        }
        if(b>a){

            JOptionPane.showMessageDialog(null, "B is Bigger than A..!!");
        }else if(a>=b){

          float val_1 = a-b
          float val_2 = b * c;
          float val_3 = b * (((e / 100) + 1) * c);
        model.setValueAt(val_3, viewRow, model.getColumnCount()-6); 
        model.setValueAt(val_2, viewRow, model.getColumnCount()-7); 
        model.setValueAt(val_1, viewRow, model.getColumnCount()-11); 
        String id2 = (table.getModel().getValueAt(viewRow, 0).toString());
        String upid = "update mydb.mytable_2 set mycolumn_2='" + b + "'where ID2='" + id2 + "'";
        dm.pst = dm.c.prepareStatement(upid);
        dm.pst.execute();
        }
    }

    } catch (Exception ex) {
        JOptionPane.showMessageDialog(null, ex);
    }

}

还有什么比执行的操作更好的吗? 注意:在我编辑我的代码后,我会说我正在使用 JTextField txt_ = new JTextField(); 作为我专栏的编辑器并且我正在使用 model = new DefaultTableModel() 在此先感谢

i am using a text field in jTable to edit a column and i use model.getValueAt(); from a column and model.setValueAt(); to another column

不要使用 ActionListener。

您的逻辑应该在您的 TableModel 中定义

@Override
public void setValueAt(Object value, int row, int column)
{
    super.setValueAt(...);

    if (column == ?)
        //  add logic here to do calculation and update other column value
}