以下是我的代碼,用於添加創建JButton,它將向連接的JTable添加一行。通過使用JButton的actionListener添加一行到JTable
我的變量如下所示,表和tbm被創建,但是在當前未顯示的程序的另一部分被初始化。這些都是實例變量。
int currentUser = 0;
JTable[] tables = new JTable[5];
DefaultTableModel[] tbm = new DefaultTableModel[5];
JButton[] addRow = new JButton[5]
這是用actionlisteners創建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運行環組裝的JTable和JButton的成JPanel並把它在一個相應的JFrame。這裏的問題是,當我按下按鈕時,會觸發錯誤的actionListener。例如,按下第0幀中的「添加行」應觸發addRow [0],但會觸發addRow [4]。
您的'ActionListener's將行添加到索引['currentUser']的'tables'中的'JTable'。那麼當你點擊按鈕時設置了什麼'currentUser'?我在你提供的代碼示例中看不到這一點。 –
1)爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 2)請爲代碼塊使用一致的邏輯縮進。 –
@安德魯湯普森,會做!我不幸地使用記事本進行編程,所以我習慣了缺乏格式化。 – user1418454