0

我创建了一个JTable包含各种不同组件的列。最后五列要么不包含任何内容(aDefaultTableCellRenderer没有值),要么包含JRadioButton使用自定义渲染器和编辑器。渲染器在我需要的单元格中创建并返回一个新的单选按钮,我想从我的面板类中访问这些单选按钮以将它们添加到ButtonGroup. 我正在使用我编写的以下代码:

protected void setButtonGroups() {
    buttonGroups = new ArrayList<ButtonGroup>();
    for (int i = 0; i < tableModel.getRowCount(); i++) {
        ButtonGroup currentGroup = new ButtonGroup();
        for (int j = 0; j < tableModel.getColumnCount(); j++) {
            if (table.getComponentAt(i, j) != null) {
                    currentGroup.add((JRadioButton)table.getComponentAt(i, j));
                }
            }
        }
        buttonGroups.add(currentGroup);
    }
}

getComponentAt()无论单元格中包含什么内容,无论它是 a JCheckBox, JRadioButton, JComboBox... ,都将返回 null ,所有内容都返回为 null。

有没有其他方法可以获取单元格的组件?或者有没有办法让我让它工作?谢谢!

4

1 回答 1

0

如果您有来自table.getModel() 的 tableModel。然后你可以调用model.getValueAt(row,col)

我不确定为什么要将 Swing 组件放在 JTable 中。你用它来格式化吗?如果是这样,请查看 LayoutManagers。如果您想编辑表格中的值,您可能需要考虑扩展 TableCellEditor。如果你真的想把组件放在你的桌子上。考虑扩展 DefaultTableCellRenderer 以返回您的组件。您将需要覆盖 getTableCellRendererComponent()

于 2014-05-17T01:56:25.840 回答