如何检索JTable中特定单元格使用的组件类型?

时间:2014-05-16 22:44:35

标签: java jtable jradiobutton buttongroup

我创建了一个JTable,其列包含各种不同的组件。最后五列不包含任何内容(DefaultTableCellRenderer没有值)或JRadioButton使用自定义渲染器和编辑器。渲染器在我需要的单元格中创建并返回一个新的radioButton,我想从我的面板类访问这些单选按钮,将它们添加到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()都会一直返回null,无论是JCheckBoxJRadioButtonJComboBox ......所有内容都返回为null。

是否有另一种获取细胞成分的方法?或者我有办法让这个工作吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果你有table.getModel()的tableModel。然后你可以拨打model.getValueAt(row,col)

我不确定为什么要将Swing组件放在JTable中。你用它来格式化吗?如果是的话look into LayoutManagers。如果要编辑表中的值,可能需要考虑扩展TableCellEditor。如果你真的想把组件放在你的表中。考虑扩展DefaultTableCellRenderer以返回组件。您需要override getTableCellRendererComponent()