如何在 Java Swing 中的 JLabel 中设置行距/高度?
Posted
技术标签:
【中文标题】如何在 Java Swing 中的 JLabel 中设置行距/高度?【英文标题】:How to set line spacing/height in a JLabel in Java Swing? 【发布时间】:2011-03-08 00:04:36 【问题描述】:我有以下 JLabel 代码:
JLabel someJLabel = new JLabel("<html>first line<br>second line</html>");
someJLabel.setFont(new Font("Arial", Font.PLAIN, 16));
我想做的是能够控制两条线之间的线高/间距。
PS:我也研究过使用段落而不是断线,但这是一回事。而且我不知道您是否可以在不使用 css 的情况下在 html 标记中执行此操作(您不能在 Java Swing 的 JLabel 的 html 代码中使用 css)。
【问题讨论】:
【参考方案1】:您可以尝试使用两个标签,并使用 LayoutManager 设置两者之间的距离以及空白。我自己喜欢 GridBoxLayout。
编辑:GridBagLayout。哎呀!
【讨论】:
我不得不说这可能会比编辑工具包更强大。 如果你只有 2 行这可能有效,但如果它是多行呢? 如果是多行,我会使用文本窗格,带有 camickr 的解决方案。【参考方案2】:查看 HTMLEditorKit 的 setStyleSheet(...) 方法。我以前从未使用过它,但我相信它提供了一些基本支持。
否则,您可以使用 JTextPane 来控制行距。我想你会使用:
StyleConstants.setLineSpacing(...);
然后您可以更改前景/背景等,使文本窗格看起来像一个标签。
【讨论】:
【参考方案3】:这应该有效,但事实并非如此。 color: green
可以工作。
content.add(new JLabel("<html><p style=\"line-height: 150%;\">hi<br>world</p></html>"));
我猜 line-height 不起作用。如果你要使用 CSS,你会这样做,所以也许你不能那样做。 Here's a nice tool我发现你可以用它来测试你的 HTML 是否能快速运行。
【讨论】:
Ya .. Swing 中的 CSS 支持目前非常糟糕。 line-height 属性已建模但未渲染。 CSS 的 Javadoc 显示了支持哪些 CSS 属性。 java.sun.com/javase/6/docs/api/index.html?javax/swing/text/html/… 没有css有没有办法做到这一点?也感谢您提供链接!【参考方案4】:设置空白边框有帮助吗,比如
label.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
方法语法 BorderFactory.createEmptyBorder(int top, int left, int bottom, int right)
【讨论】:
【参考方案5】:嗯 .. JLabel 中的 CSS 似乎对我有用,如果有人坚持支持的属性。试试padding
(或margin
)和font-size
:
someJLabel = new JLabel("<html><body><p style=\"padding:10; font-size:30\">First line</p><p style=\"padding:10; font-size:20\">Second line</p></body></html>");
【讨论】:
【参考方案6】:由于 Java 支持 标签和 CSS margin 属性,您可以使用下一个解决方案:
new JLabel("<html>first line<p style='margin-top:-5'>second line");
附:现在不需要关闭html标签了。
【讨论】:
另请注意:margin-top:-5px
不起作用,但 margin-top:-5
可以,无论出于何种原因...
我使用 margin-top: 5以上是关于如何在 Java Swing 中的 JLabel 中设置行距/高度?的主要内容,如果未能解决你的问题,请参考以下文章