DefaultTableCellRenderer支持的组件

时间:2012-12-13 04:07:40

标签: java swing

我想知道除了JCheckbox和JComboBox之外的DefaultTableCellRenderer支持的组件......

2 个答案:

答案 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()方法在表中使用该渲染器