我想知道除 JCheckbox 和 JComboBox 之外的 DefaultTableCellRenderer 支持的组件...
问问题
192 次
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 回答