java,具有固定最大宽度的多行工具提示,使用html标记

时间:2013-11-15 18:57:37

标签: java html swing tooltip

我想在我的swing组件中添加多行工具提示消息。基本的解决方案是使用这样的html标签:

label.setToolTipText("<html><p width=\"350px\">" + text + "</p></html>");

使用长文本可以正常工作。但是,如果文本,我们说,只包含一个单词,它也将固定350px宽度,并留有大量空白空间。


max-width是否有任何特殊的html属性可以使用setToolTipText()方法正常工作? 我尝试了下一个解决方案,但它不起作用:

"<p style=\"max-width: 350px\">"

如果宽度小于350像素,我应该以像素计算文字宽度并更改开始<p>标记吗?

4 个答案:

答案 0 :(得分:0)

以下代码将动态设置工具提示的大小。

如果是单个单词,它将根据文本的像素大小设置大小。 (将没有空白空间)。如果是大段落,它将最大扩展到350像素,并以多行显示文本。

FontMetrics fontMetrics = label.getFontMetrics(label.getFont());
int length = fontMetrics.stringWidth(text);
label.setToolTipText("<html><p width=\"" + (length > 350 ? 350 : length) + "px\">" + text + "</p></html>\"");

Screenshot - Tooltip: Single word

Screenshot - Tooltip: Multiple words

Screenshot - Tooltip: Paragraph

答案 1 :(得分:0)

您应该使用<br/>标记向下一行,如下所示:

JButton button = new JButton("click me");
button.setToolTipText("<html>multy-line<br/>tool-tip</html>");

答案 2 :(得分:0)

我喜欢用 self.tabBarController?.tabBar.items![0].image = UIImage(named: "your image name") // items![0] index of your tab bar item.items![0] means tabbar first item self.tabBarController?.tabBar.items![0].selectedImage = UIImage(named: "your image name") 包裹工具提示文本的想法,但一些建议的解决方案有各种问题,最常见的是:1) 总是使用任意宽度,2) 使用整个长度文本,以及 3) 使用错误的字体来计算所需的宽度。我提供以下解决这些问题的方案。

<html><p width 350px>text</html>

}

答案 3 :(得分:-2)

我建议如下:

设置固定宽度后,您可以使用以下方法获取首选大小:

Dimension d = someToolTip.getPreferredSize();
if (d.width < 350) {

    // Insert code to make tooltip-size smaller, by setting it to d.width;

}