0

给我猜这个。

以这里显示的这个简单的 MyCellRenderer 示例为例...

class MyCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(
                    JTable table, Object value,
                    boolean isSelected, boolean hasFocus,
                    int row, int column) {
    JLabel c = (JLabel)super.getTableCellRendererComponent( // params from above );
    // This...
    c.setToolTipText("I don't want text, I want a custom JComponent here");
    return c;
}
}

但不是简单地访问超级渲染的 JLabel 并添加一个简单的文本工具提示,我想覆盖该 JLabel 并使用 JCustomToolTip 库 http://prefuse.org/doc/api/prefuse/util/ui/使用完全自定义的工具提示JCustomTooltip.html

...但我想保持超级渲染的 JLabel 的所有原始属性。唯一改变的是添加了 JCustomToolTip。

我已经尝试了一切,但似乎没有任何效果。我尝试扩展 JLabel 并覆盖 createToolTip(),然后将该子 JLabel 返回到表中(所有属性都从超级 JLabel 复制)......但没有成功。JTable 似乎只识别文本工具提示,而 Nimbus 没有显示任何原始格式。

我该怎么办?

4

1 回答 1

0

如果我有时间,我稍后会修改我的代码以供将来参考。但我在 Stack Overflow 的其他地方找到了解决方案。正如我所怀疑的,JTable 以不同的方式实现 JToolTip,因为它是在 JTable 级别而不是 JComponent 单元格上调用的。

在自定义 CellRenderer 中覆盖 createToolTip()

于 2014-03-09T22:30:31.830 回答