我正在嘗試在IntelliJ中創建一個帶有兩列的JTable:一個是複選框,另一個是字符串。用戶可以通過按下一個JButton來向表中添加一個任意字符串,並且每次按下按鈕時,一個新行被添加到表中,其中第一列是複選框,第二列是任意字符串。這可以通過向表中添加任意數量的行來進行多次。通過點擊複選框並按下刪除按鈕,該行將從表格中刪除。整個過程都可以正常工作,但並不是我遇到的問題。爲JTable數據創建持久引用
每當用戶按下添加字符串到表的按鈕,我想將該字符串添加到一致的對象/容器。因此,在初始化的對象爲空,
Object[][] tableData;
但是當按下按鈕的對象現在包含了「複選框」由布爾表示,該字符串。
Object[][] tableData = {
{false, "String"}
}
而這可能會持續一段時間。
Object[][] tableData = {
{false, "String"},
{false, "String"},
{false, "String"},
{false, "String"},
{false, "String"},
{false, "String"}
}
若有布爾值獲取更改爲true(通過複選框)和刪除按鈕被按下,則該對象的特定「行」或部分被刪除。我將如何去創建這個對象或容器並維護它?有沒有更好的方法做到這一點沒有對象?
我現在所擁有的簡單概述如下。
String colNames = {" ", "String"};
DefaultTableModel tableModel = new DefaultTableModel(colNames, 0);
importTable = new JTable(tableModel) {
@Override
public Class getColumnClass(int column) {
switch(column) {
case 0:
return Boolean.class;
default:
return String.class;
}
}
};
importButton.addActionListener(new ActionListener() {
public void actionPerofrmed(ActionEvent e) {
Object[][] newData = {
{false, "String"}
};
tableModel.addRow(newData[0]);
}
});
removeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < tableModel.getRowCount(); i++) {
Boolean checked = (Boolean) tableModel.getValueAt(i, 0);
if (checked) {
tableModel.removeRow(i);
i--;
}
}
}
});
在DefaultTableModel中使用「getValueAt」函數完美運行。至於你的問題,恐怕我不知道答案。這是我第一次用Java編寫這樣的東西。 – Kyleryan19