2010-06-24 59 views
4

我有以下的JLabel代码:如何在Java Swing中设置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)。

回答

4

这应该有效,但事实并非如此。 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是否会快速工作。

+0

Ya .. Swing中的CSS支持目前非常蹩脚。 line-height属性是建模的,但没有渲染。 Javadoc for CSS显示支持哪些CSS属性。 http://java.sun.com/javase/6/docs/api/index.html?javax/swing/text/html/CSS.html – 2010-06-25 13:45:24

+0

噢..感谢Swing HTML预览链接! :) – 2010-06-25 13:46:20

+0

有没有办法做到这一点没有CSS?并感谢您的链接! – 2010-06-25 14:38:28

0

您可以尝试使用两个标签,并使用LayoutManager设置两者之间的距离以及空白。我自己喜欢GridBoxLayout。

编辑:GridBagLayout。哎呦!

+0

我不得不说这可能会分配更强大,然后搞乱编辑器套件。 – Justin 2010-06-24 21:24:22

+0

如果你只有2行,这可能会工作,但如果它是多行? – 2010-06-25 13:58:05

+0

如果是多行,我会用一个文本窗格,与camickr的解决方案。 – badpanda 2010-06-25 15:14:29

3

查看HTMLEditorKit的setStyleSheet(...)方法。我从来没有用过它,但我相信它提供了一些基本的支持。

否则,您可以使用JTextPane来控制行间距。我认为你会使用:

StyleConstants.setLineSpacing(...); 

然后你可以改变前景/背景等,使文本窗格看起来像一个标签。

-1

是否设置空边框帮助,像

label.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 

方法的语法BorderFactory.createEmptyBorder(INT顶部,诠释离开,诠释下,诠释右)

2

嗯..在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>"); 
2

因为Java的支持<p>标签和CSS 保证金属性你可以使用一个解决方案:

new JLabel("<html>first line<p style='margin-top:-5'>second line"); 

附:现在不需要关闭html标签。

+0

另请注意:'margin-top:-5px'不起作用,但'margin-top:-5'不管什么原因 – Tustin2121 2016-02-22 18:42:42