java TableModelListener有时只起作用
我有一个使用jTable的数据库应用程序(使用netbeans),我在jTable中添加了一个表模型侦听器,因此当我编辑jTable时,它也会编辑数据库(MySQL)。但是,当用户单击jTable并单击按钮时,它就会停止工作
编辑:我意识到它只有在运行“jTable1.setModel(DbUtils.resultsetTableModel(mySql.UpdateTable())”时才会停止工作以更新表。当我按下运行这条线的按钮时,它停止工作,任何其他按钮或任何其他时间,它都会工作
要更新表,请执行以下操作:
public ResultSet UpdateTable(){
Connection con = connect();
try{
Statement s = con.createStatement();
ResultSet resultset;
resultset = s.executeQuery("select * from customera");
return resultset;
}
catch(SQLException e){
System.out.println(e.getMessage());
}
return null;
}
}
tablemodellistener类:
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
public class TableActionListener implements TableModelListener{
Rob1 r;
public TableActionListener(){
r = new Rob1();
}
public void tableChanged(TableModelEvent e){
System.out.println("action");
int id = r.getID();
int column = e.getColumn();
int row = e.getFirstRow();
}
}
在构造函数中添加了类似的表模型侦听器:
jTable1.getModel().addTableModelListener( new TableActionListener());
要单击该行,我添加了以下代码:
int id;
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
System.out.println(evt.getClickCount());
int row = jTable1.getSelectedRow();
int col = jTable1.getSelectedColumn();
id = (int)jTable1.getModel().getValueAt(row, 0);
}
要返回当前id,请执行以下操作:
public int getID(){
return id;
}
# 1 楼答案
默认情况下,仅当移动到表格中的另一个单元格时,表格单元格编辑器才会停止编辑
因此,当您单击另一个组件时,需要通知表停止编辑。然后将保存数据并调用TableModelListener
查看Table Stop Editing了解两种方法:
1)将属性添加到表中:
2)向按钮的侦听器添加代码:
您可能还想签出Table Cell Listener,这可能比使用TableModelListener更合适