2010-06-24 519 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