JLabel 中心内容分 3 行
Posted
技术标签:
【中文标题】JLabel 中心内容分 3 行【英文标题】:JLabel center content in 3 rows 【发布时间】:2015-07-05 23:37:50 【问题描述】:我试图将 JLabel 中的内容居中,并将前三个字符串添加到三个不同的行中。我试图用 CSS 来做,但 JLabel 并没有像我想要的那样格式化它。它目前的样子: 但我希望它看起来像这样:
==================================
|| Eleking02 vs. Nils
||
||
|| . 7 - 3 .
||
||. Gewonnen! .
pane.setText("<html><div style=\"color: green; text-align: left;\">" + this.getGewinner()
+ "</div><div style=\"text-align: center; margin-top: -17px;\">"
+ "Vs. </div><div style=\"margin-top: -20px; text-align: right; color: red;\">" + this.getVerlierer()
+ "</div><br/>" + "<font>" + this.getSiegerPunkte() + " - " + this.getVerliererPunkte() + "</font><br/>"
+ "<font>Gewonnen!</font></html>");
也许我可以通过 gridLayout 实现我想要的?
【问题讨论】:
当然有很多方法可以实现这一点,但我建议您使用 GridBagLayout 和多个 JLabel 来满足您的目的 你可以试试code.google.com/p/flying-saucer 并在那里传递HTML 我会推荐使用 code.google.com/p/flying-saucer 我用它做了一些很棒的体验。 你为什么要问网格布局?你可以自己尝试一下 【参考方案1】:在 Java 中可以使用 HTML/CSS 来设置标签字体的样式真是太神奇了。可能有多种方法可以解决此问题,但如果您想坚持使用 HTML/CSS,以下是一种似乎可行的方法:
pane.setText("<html>"
+ "<div style=\"text-align: center;\">"
+ "<span style=\"color: green; text-align: left;\">" + "Eleking02 " + "</span>"
+ "<span style=\"text-align: center; margin-top: -17px;\">" + "Vs. </span> "
+ "<span style=\"margin-top: -20px; text-align: right; color: red;\">" + " Nils" + "</span>"
+ "</div>"
+ "<br/>"
+ "<div style=\"text-align: center;\">"
+ "<font>" + "7" + " - " + "3" + "</font>"
+ "</div>"
+ "<br/>"
+ "<div style=\"text-align: center;\">"
+ "<font>Gewonnen!</font></html>"
+ "</div>"
+ "</html>");
HTML 中的 Div 元素是块元素,这意味着它们会在每个 Div 之后自动创建一个新行。你有多个 Div,这会阻止你想要的文本都在一行上。 span 元素做同样的事情,只是它不在元素之后创建新行。为了使文本居中,我只是将我想要居中的内容放在一个 Div 中并应用 text-align: center。这似乎可以解决问题。
【讨论】:
以上是关于JLabel 中心内容分 3 行的主要内容,如果未能解决你的问题,请参考以下文章