如何使 JLabel 中的文本居中?
Posted
技术标签:
【中文标题】如何使 JLabel 中的文本居中?【英文标题】:How to center the text in a JLabel? 【发布时间】:2011-10-12 05:46:11 【问题描述】:尽管尝试了很多次,但我无法得到我希望看到的结果 - 文本在 JLabel 中居中,而 JLabel 在 BorderLayout 中有点居中。我说“有点”是因为窗口的右下角还应该有另一个标签“状态”。这里有一段代码负责:
setLayout(new BorderLayout());
JPanel area = new JPanel();
JLabel text = new JLabel(
"<html>In early March, the city of Topeka," +
" Kansas,<br>temporarily changed its name to Google..." +
"<br><br>...in an attempt to capture a spot<br>" +
"in Google's new broadband/fiber-optics project." +
"<br><br><br>source: http://en.wikipedia.org/wiki/Google_server" +
"#Oil_Tanker_Data_Center</html>", SwingConstants.CENTER);
text.setVerticalAlignment(SwingConstants.CENTER);
JLabel status = new JLabel("status", SwingConstants.SOUTH_EAST);
status.setVerticalAlignment(SwingConstants.CENTER);
Font font = new Font("SansSerif", Font.BOLD, 30);
text.setFont(font);
area.setBackground(Color.darkGray);
text.setForeground(Color.green);
// text.setAlignmentX(CENTER_ALIGNMENT);
// text.setAlignmentY(CENTER_ALIGNMENT);
// text.setHorizontalAlignment(JLabel.CENTER);
// text.setVerticalAlignment(JLabel.CENTER);
Font font2 = new Font("SansSerif", Font.BOLD, 20);
status.setFont(font2);
status.setForeground(Color.green);
area.add(text, BorderLayout.CENTER);
area.add(status, BorderLayout.EAST);
this.add(area);
感谢您提供的任何帮助。
【问题讨论】:
how to center JLabel in Jframe Swing?的可能重复 【参考方案1】:String text = "In early March, the city of Topeka, Kansas," + "<br>" +
"temporarily changed its name to Google..." + "<br>" + "<br>" +
"...in an attempt to capture a spot" + "<br>" +
"in Google's new broadband/fiber-optics project." + "<br>" + "<br>" +"<br>" +
"source: http://en.wikipedia.org/wiki/Google_server#Oil_Tanker_Data_Center";
JLabel label = new JLabel("<html><div style='text-align: center;'>" + text + "</div></html>");
【讨论】:
谢谢。那行得通。顺便说一句:我可以使用 html 来更改一个 JLabel 中的字体大小吗?我希望源地址更小。 试试"<font size=\"-2\">source: http://en.wikipedia.org/wiki/Google_server#Oil_Tanker_Data_Center</font>"
其实编辑后的版本不行。我稍后使用的方法会给出以下错误消息:“... is undefined for the type String”
使用单引号可以节省一些反斜杠:"<div style='text-align: center;'>"
这个答案对我不起作用,但the one by nimmi 起作用了。【参考方案2】:
以下构造函数JLabel(String, int)
允许您指定标签的水平对齐方式。
JLabel label = new JLabel("The Label", SwingConstants.CENTER);
【讨论】:
添加了文档参考并稍微清理了代码。【参考方案3】:myLabel.setHorizontalAlignment(SwingConstants.CENTER);
myLabel.setVerticalAlignment(SwingConstants.CENTER);
如果您由于某种原因无法重建标签,这就是您编辑预先存在的 JLabel 的这些属性的方式。
【讨论】:
以上是关于如何使 JLabel 中的文本居中?的主要内容,如果未能解决你的问题,请参考以下文章