jTable(ネットビーンズを使用)を使用するデータベースアプリケーションがあります。テーブルモデルリスナをjTableに追加しましたので、jTableを編集するとデータベース(MySQL)も編集されます。しかし、ユーザーがjTableをクリックしてボタンをクリックすると動作しなくなります。TableModelListenerは時々しか動作しません
編集:アイブ氏は、私が実行したときに、それが唯一の動作を停止することを実現し、 "jTable1.setModel(DbUtils.resultSetToTableModel(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());
取得します現在のIDを返すために
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);
}
:
public int getID(){
return id;
}
あなたは達成したいことと失敗する方法についてより具体的に説明できますか? –
setModelの後、リスナーは古いモデルをリッスンします。リスナーを新しいモデルに追加する必要があります。それが問題だろうか? –
「モデルを設定する」とはどういう意味ですか? –