0

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

4

2 回答 2

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().

于 2012-12-13T04:18:46.983 回答
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()然后您可以使用每列的方法在表中使用该渲染器

于 2012-12-13T05:05:18.957 回答