我想知道除了JCheckbox和JComboBox之外的DefaultTableCellRenderer支持的组件......
答案 0 :(得分:2)
DefaultTableCellRenderer
本身不会呈现复选框或组合框。它是JTable
提供一些基于getColumnClass()
实现使用的默认渲染器。以下是来自JTable
的代码,它初始化了一些作为内部类实现的默认渲染器:
protected void createDefaultRenderers() {
defaultRenderersByColumnClass = new UIDefaults(8, 0.75f);
// Objects
setLazyRenderer(Object.class,
"javax.swing.table.DefaultTableCellRenderer$UIResource");
// Numbers
setLazyRenderer(Number.class, "javax.swing.JTable$NumberRenderer");
// Doubles and Floats
setLazyRenderer(Float.class, "javax.swing.JTable$DoubleRenderer");
setLazyRenderer(Double.class, "javax.swing.JTable$DoubleRenderer");
// Dates
setLazyRenderer(Date.class, "javax.swing.JTable$DateRenderer");
// Icons and ImageIcons
setLazyRenderer(Icon.class, "javax.swing.JTable$IconRenderer");
setLazyRenderer(ImageIcon.class, "javax.swing.JTable$IconRenderer");
// Booleans
setLazyRenderer(Boolean.class, "javax.swing.JTable$BooleanRenderer");
}
然后在defaultRenderersByColumnClass
中使用初始化的getDefaultRenderer()
哈希表。
答案 1 :(得分:1)
我不确定我是否正确理解您的问题,但如果您想在JTextField
单元格中插入一些组件(例如JTable
),则可以创建一个自定义渲染器,如:
public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
//.....
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
//create a component according to arguments recieved, and return
//e.g. in simplest terms
return new JTextField();
}
然后您可以使用每个列的setDefaultRenderer()
方法在表中使用该渲染器