我创建了一个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,无论是JCheckBox
,JRadioButton
,JComboBox
......所有内容都返回为null。
是否有另一种获取细胞成分的方法?或者我有办法让这个工作吗?谢谢!
答案 0 :(得分:0)
如果你有table.getModel()的tableModel。然后你可以拨打model.getValueAt(row,col)
我不确定为什么要将Swing组件放在JTable中。你用它来格式化吗?如果是的话look into LayoutManagers。如果要编辑表中的值,可能需要考虑扩展TableCellEditor。如果你真的想把组件放在你的表中。考虑扩展DefaultTableCellRenderer以返回组件。您需要override getTableCellRendererComponent()。