以下は、接続された JTable に行を追加する JButton を追加しようとする私のコードです。
私の変数を以下に示します。テーブルと tbm は作成されますが、現在表示されていないプログラムの別の部分で初期化されました。これらはすべてインスタンス変数です。
int currentUser = 0;
JTable[] tables = new JTable[5];
DefaultTableModel[] tbm = new DefaultTableModel[5];
JButton[] addRow = new JButton[5]
これは、アクション リスナーを使用して JButton を作成するためのコードです。
for(int i=0;i<tbm.length;i++) {
addRow[i] = new JButton("Add Row");
selectionModel = tables[i].getSelectionModel();
currentUser=i;
addRow[i].addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {
Object[] temp = {"",""};
tbm[currentUser].addRow(temp);
selectionModel.setSelectionInterval(tbm[currentUser].getRowCount()-1,tbm[currentUser].getRowCount()-1);
}});
}
後で、0-tables.length から実行される for ループを使用して JTable と JButton を JPanel にアセンブルし、それぞれの JFrame に配置します。ここでの問題は、ボタンを押すと、間違った actionListener がトリガーされることです。たとえば、フレーム 0 で「Add Row」を押すと、addRow[0] がトリガーされるはずですが、代わりに addRow[4] がトリガーされます。