我想根据该行布尔列中的复选框值将数据从表行添加到数组中。
这是 JTable 组件代码:
String[] columnNames = {"Select", "Status", "Modified Files"};
DefaultTableModel model = new DefaultTableModel(columnNames, 0) {
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == 0) return Boolean.class;
else return String.class;
}
};
...
model.addRow(new Object[]{Boolean.FALSE, changeType, filePath});
}
然后尝试将所述行中的数据添加到数组中:
if (modifiedFilesTable.isEditing()) modifiedFilesTable.getCellEditor().stopCellEditing();
for (int i = 0; i < model.getRowCount(); i++) {
Boolean isSelected = (Boolean) model.getValueAt(i, 0);
String filePath = (String) model.getValueAt(i, 2);
if (Boolean.TRUE.equals(isSelected)) {
filesToCommit.add(new File(filePath));
}
}
(我尝试只包含相关代码) 我发现的是,在此处创建时分配的复选框:
model.addRow(new Object[]{Boolean.FALSE, changeType, filePath});
确定 isSelected 的值,并忽略复选框值。因此,如果它是 Boolean.TRUE,所有文件都将添加到 filesToCommit 中..
我以前问过这个问题,但在问题中加载了太多代码,除了一个说简化问题之外没有得到任何回复。所以我相信这是一个简单的我可以得到的。
我到处寻找解决方案,但没有任何效果。因此,任何有关如何解决此问题的想法将不胜感激。
您需要循环
modifiedFilesTable
:
for (int i = 0; i < modifiedFilesTable.getRowCount(); i++) { // Loop through the rows
Boolean isSelected = (Boolean) modifiedFilesTable.getValueAt(i, 0);
String filePath = (String) modifiedFilesTable.getValueAt(i, 2);
if (Boolean.TRUE.equals(isSelected)) {
filesToCommit.add(new File(filePath));
}
}