【发布时间】:2009-05-20 13:28:08
【问题描述】:
您好,我有一个名为 ColorChooser 的类(在 net.java.dev.colorchooser.ColorChooser 包中)
这是一个用于选择颜色的自定义组件。我想要的是在第二列中显示一个带有 ColorChooser 的 JTable。所以我创建了自己的 TableCellRenderer 并且它可以工作:
@SuppressWarnings("serial")
class ColorChooserTableRenderer extends DefaultTableCellRenderer {
public static List<ColorChooser> colors;
public ColorChooserTableRenderer(int rows) {
colors = new ArrayList<ColorChooser>(rows);
for (int i = 0; i<rows ; i ++) {
colors.add(new ColorChooser());
}
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return colors.get(row);
}
}
我在我的表中注册了这个:
JTable t = new JTable(5,3);
t.getColumn(t.getColumnName(1)).setCellRenderer(new ColorChooserTableRenderer(5));
显示效果不错。当我将鼠标悬停在其中一个上时,它甚至会显示 ColorChoosers 的工具提示。问题是 ColorChoosers 没有收到 MouseEvents。
通常,当您在 ColorChooser 上按住鼠标时,您会看到一个弹出窗口,您可以使用它来选择一种颜色。在 JTable 中 ColorChooser 组件没有收到鼠标事件时。
有什么解决办法吗?
编辑:问题可以很容易地修改为:
您能否给我一个小例子,说明第二列中包含实际工作的 JButton 的表格?你知道,可以按下的按钮吗?
【问题讨论】:
-
你真的不想让颜色变成静态的(或公开的或非最终的)。