如何获取 JTable 中布尔复选框列的值?

问题描述 投票:0回答:1

我想根据该行布尔列中的复选框值将数据从表行添加到数组中。

这是 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 中..

我以前问过这个问题,但在问题中加载了太多代码,除了一个说简化问题之外没有得到任何回复。所以我相信这是一个简单的我可以得到的。

我到处寻找解决方案,但没有任何效果。因此,任何有关如何解决此问题的想法将不胜感激。

java swing
1个回答
0
投票

您需要循环

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));
        } 
     }
© www.soinside.com 2019 - 2024. All rights reserved.