大家好,希望你们一切顺利..今天我再次有一个问题,我正在使用 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/