我的应用程序中的工具提示可能很长,因此我希望它们有换行符。
我不想使用html,因为我更喜欢设置工具提示的(最大)宽度,并动态换行。
在这个类似问题的公认答案中,Java中的多行工具提示?我读过JMultiLineToolTip
。不幸的是,提供的链接已经不起作用了,而且有很多不同的JMultiLineToolTip
。因此,我有两个问题:
- 哪个
JMultiLineToolTip
是一个好的使用 - 如何使用这样的类来表示应用程序中的所有工具提示
编辑:因为每个人似乎都建议使用html,有没有一种方法可以使用html定义工具提示的像素宽度(或字符数以外的其他单位)?
如果你不怕扩展摆动工具提示,你可以创建自己的JMultiLineToolTip:
- 扩展JTooltip在扩展的Tool tip组件实现中
- 在customUI实现中设置自定义工具提示UI
- 实现
paint()
方法在多行中写入给定字符串
这里有一个例子-它展示了如何使用它以及
然而,要回答您的问题:
-
哪个JMultiLineToolTip是一个好的使用方法?
使用
<html>
-
如何使用这样的类来表示应用程序中的所有工具提示?
根据组件,实现起来很容易,但很繁琐,因为您必须覆盖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
,您必须手动设置setInitialDelay
和setDismissDelay
(摆动定时器),setVisible(true/false)
-
优点是您使用完全可管理的顶级容器,并为自己的父定义
3) 我使用JLabel
,并将Html
格式化和样式化的文本添加到GlassPane
中,请注意,最简单的选择是使用非不透明的JLayeredPane
(Java6)或JLayer
(Java7)