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

标签 java swing jtable textfield

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

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
}

关于java - jTable 中的文本字段比 ActionPerformed(java.awt.event.ActionEvent evt) 更好!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35044666/

相关文章:

java - 必须使用 jtextfield 从另一个类访问 switchcase 语句

Java:AbsoluteLayout 中的额外空间

java - JTable:如何避免重复行和聚合项目数量

java - 如何在JTable中显示图像?

java - 如何处理 Apache Curator 分布式锁连接丢失

java - 以 b 为基数的 int n 的整数到字符串表示形式

java - arraylist Android 上的 TextView

java - Swing/AWT 组件中 `setLayout` 方法的用途是什么?

java - 从具有未知行和列的表中获取表模型

java - Java的Random Object是不是通过均等的机会来产生随机数的?