嗨,我有一个名为 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 组件不接收鼠标事件。
有什么解决办法吗?
编辑:这个问题可以很容易地修改为:
你能给我一个在第二列中包含实际工作的 JButtons 的表的小例子吗?你知道,可以按下的按钮吗?