使用Java(Swing)使所有工具提示多行



我的应用程序中的工具提示可能很长,因此我希望它们有换行符。

我不想使用html,因为我更喜欢设置工具提示的(最大)宽度,并动态换行。

在这个类似问题的公认答案中,Java中的多行工具提示?我读过JMultiLineToolTip。不幸的是,提供的链接已经不起作用了,而且有很多不同的JMultiLineToolTip。因此,我有两个问题:

  1. 哪个JMultiLineToolTip是一个好的使用
  2. 如何使用这样的类来表示应用程序中的所有工具提示

编辑:因为每个人似乎都建议使用html,有没有一种方法可以使用html定义工具提示的像素宽度(或字符数以外的其他单位)?

如果你不怕扩展摆动工具提示,你可以创建自己的JMultiLineToolTip:

  1. 扩展JTooltip在扩展的Tool tip组件实现中
  2. 在customUI实现中设置自定义工具提示UI
  3. 实现paint()方法在多行中写入给定字符串

这里有一个例子-它展示了如何使用它以及

然而,要回答您的问题:

  1. 哪个JMultiLineToolTip是一个好的使用方法?

    使用<html>

  2. 如何使用这样的类来表示应用程序中的所有工具提示?

    根据组件,实现起来很容易,但很繁琐,因为您必须覆盖creatreToolTip()API。但如果你想在全球范围内改变它,你可以:

    (i) 简单的方法-在执行开始时用UIManager注册您的自定义工具提示UI。

    UIManager.put( "ToolTipUI", "SeNormToolTipUI" );

    UIManager.put( "SeNormToolTipUI",Class.forName( multiLineToolTipUIClassName ) );

    (ii)复杂方式

    你必须开始实现你自己的观感。在外观实现中,您将为ToolTipUI提供默认值作为UI实现,然后将该外观设置为正在运行的应用程序。例如,看看MetalLookAndFeel的实现。您可以扩展该部分并在lnf上实现您的。

因此,最好使用<html>

1)Html是普通JToolTip 的最简单方法

2) 使用JWindow(未修饰的JDialog)和JTextArea,最好是JTextPane(支持样式化文本)、

  • 缺点是您必须手动将窗口设置为Point,您必须手动设置setInitialDelaysetDismissDelay(摆动定时器),setVisible(true/false)

  • 优点是您使用完全可管理的顶级容器,并为自己的父定义

3) 我使用JLabel,并将Html格式化和样式化的文本添加到GlassPane中,请注意,最简单的选择是使用非不透明的JLayeredPane(Java6)或JLayer(Java7)

最新更新