【问题标题】:fancy tooltips in SwingSwing 中的精美工具提示
【发布时间】:2011-08-19 19:49:13
【问题描述】:

我有一个 JTable,我想为列中的特定单元格显示一个精美的工具提示(基本上是一个 JTextArea)。我正在使用自定义单元格渲染器,所以如果我能弄清楚当我将鼠标悬停在单元格渲染器的组件上时如何弹出一个窗口,那将很容易。

有没有例子说明如何做到这一点?

【问题讨论】:

标签: swing jtable tooltip jtextarea


【解决方案1】:

如果您在内容周围使用<html></html> 标签,您可以use HTML in tooltips

使用 HTML 格式化工具提示。使用彩色 (<font>) 和多行 (<br>) 工具提示现在很容易。


创建和覆盖默认的JToolTip 有点困难。每个组件都有一个JToolTip 实例,您可以使用JComponent.createToolTip() 检索这个实例。要创建自定义工具提示,请扩展 cell renderer 并覆盖它的 createToolTip 以实现您的自定义功能(返回 JToolTip 的自定义扩展版本)。

【讨论】:

  • 酷,我将尝试 HTML 方法。 w/r/t createToolTip:它不应该在 JTable 上,它应该在 TableCellRenderer 返回的组件上。
【解决方案2】:

我不确定我是否完全清楚您希望进行什么样的自定义,所以我会在这里概括一下。

有一个类UIManager,用于控制组件的外观和感觉,包括swing ToolTip 类。进行简单更改的简单方法是调用 UIManager 中的方法来设置工具提示的属性。这样做你可以做一些事情,比如使用 BorderFactory 添加装饰边框,或更改背景颜色等。

以下是更改其中一些属性的一些示例:

UIManager.put("ToolTip.background", new ColorUIResource(255, 247, 200)); // The color is #fff7c8.
Border border = BorderFactory.createLineBorder(new Color(76,79,83)); // The color is #4c4f53.
UIManager.put("ToolTip.border", border);
ToolTipManager.sharedInstance().setDismissDelay(15000);// 15 seconds    

如果你想改变一大堆关于它们的外观和感觉的事情,最好使用一个实现自定义工具提示外观的类来扩展你当前的外观和感觉。 full example 可以在前 Sun 开发人员的这篇博文中找到。

您还可以在工具提示上查看how to set the insets 上的这个 Stack Overflow 问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    相关资源
    最近更新 更多