我有一個使用jTable的數據庫應用程序(使用netbeans),我在jTable中添加了表模型偵聽器,所以當我編輯jTable時它也編輯數據庫(MySQL)。然而,當用戶點擊jTable並點擊一個按鈕時,它會停止工作。我已經意識到,它只停止工作,當我運行「jTable1.setModel(DbUtils.resultSetToTableModel(mySql.UpdateTable()));」更新表格。當我按下運行這條線的按鈕時,它停止工作,任何其他按鈕或任何其他時間,並且它工作。TableModelListener只有時纔有效
更新表:
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;
}
你可以更具體地說明你想要達到什麼目的,它是如何失敗的? –
setModel之後,偵聽器偵聽過時的模型,需要將偵聽器添加到新模型中。這可能是問題嗎? –
你是什麼意思「設置模型」? –