2017-03-19 30 views
0

jTableセル変更のイベントハンドラを実装する方法を知りたいと思います。私はこのJTableのを持っていると私は、動的にデータを追加するためのコードセグメントである。このJTableのJTableセル変更のイベントハンドラを実装する方法

にデータを追加し、式中、iはセルを編集するようになっている。この表で

JSONArray objResponseArray = (JSONArray) response.get("response"); 
DefaultTableModel model = (DefaultTableModel) tblAccounts.getModel(); 
for (int i = 0; i < objResponseArray.size(); i++) { 
    JSONObject objTempAccount = (JSONObject) objResponseArray.get(i); 
    Object[] row = { 
     objTempAccount.get("Account ID").toString(), 
     objTempAccount.get("Account Type").toString(), 
     objTempAccount.get("Account Number").toString(), 
     objTempAccount.get("Sort Code").toString(), 
     objTempAccount.get("Balance").toString(), 
     objTempAccount.get("Card").toString() 
    }; 
    model.addRow(row); 
} 

。それから、セルが変更されたときにトリガするイベントハンドラをどのようにトリガできますか?そして、トリガされたときに私は行全体を取得し、データベースを更新したいと思います。

重要:Netbeansを使用していて、イベントハンドラがjtable要素のプロパティウィンドウのイベントから選択されているため、実装する際に役立ちます。

答えて

1

TableModelTableModelListenerを追加できます。データが変更されると、イベントが生成されます。ただし、データを変更せずに別のセルにセルとテーブルを編集し始めると、イベントが生成されます。

代わりに、Table Cell Listenerは、セル内のデータが実際に変更されたときにのみイベントを生成すると考えてもよいでしょう。

いずれの場合も、イベントにはセルの行/列が含まれるため、表のgetModel().getValueAt(...)メソッドを使用して行の他の列から日付を簡単に取得できます。私は、NetBeansを使用しています

...無関係であるべき

。 IDEではなく、Swingの使い方を学ぶ必要があります。 IDEを切り替えると、コードは移植性がなくなり、特にフレームを構築するコードに移植されない可能性があります。とにかく別のIDEのコードを手動で変更する必要があります。

+0

はい、netbeansはイベントリスナーを生成するので、手動で実装するのは面倒です。それが私が手動で実装する方法を尋ねた理由です –

0
CellEditorListener ChangeNotification = new CellEditorListener() { 
    public void editingCanceled(ChangeEvent e) { 

     //Action to be performed 
    } 


    public void editingStopped(ChangeEvent e) { 
     //Action to be performed 
    } 
}; 
use the above code inside the class before the constructor. 

Inside the constructor give 

tablename.getDefaultEditor(String.class).addCellEditorListener(ChangeNotification)。

関連する問題