java swing自定义表格单元格?
问题描述:
在java Swing table中,如何将一个单元格拆分为两个,一个是TextField,另一个是复选框。我做了一些代码,但不起作用。感谢java swing自定义表格单元格?
public class CustomTableCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
JTextField fld = new JTextField();
JCheckBox chx = new JCheckBox();
cell.add(fld); // Doesn't work
cell.add(chx); // Doesn't work
return cell;
}
}
答
1)在这种情况下,你必须定义LayoutManager
,因为JLabel/JComponent
(默认情况下返回TableCellRenderer
)不implemented any LayoutManager
2)把JPanel
nested another JComponents(JPanel
在默认情况下FlowLayout
)进入细胞
3)最舒适的将被投入到JTextField
一个柱和Boolean
值(返回JCheckBox
)到另一列
渲染器用于渲染(显示)一些数据。它不用于输入数据。你为什么想要这样的渲染器?另外,由'super.getTableCellRendererComponent(...)'返回的组件是一个JLabel。你不应该添加元素到JLabel。 – 2012-01-31 17:06:07