Java 如何在JLabel中格式化文本

Java 如何在JLabel中格式化文本,java,swing,jlabel,Java,Swing,Jlabel,我需要以这种格式显示JLabel文本 Hoffenheim 1 : 0 Koeln Bayern 2 : 1 HSV 我就是做不到。我尝试了String.format(),但运气不好。 有什么建议吗?String.format()用于将内容插入到特殊格式的字符串中,而不是以不同方式显示字符串。然而,JLabel和其他Swing组件确实允许HTML,这可能会满足您的需要 new JLabel("<html><pre> Hoffenheim

我需要以这种格式显示JLabel文本

Hoffenheim  1 : 0  Koeln
    Bayern  2 : 1  HSV
我就是做不到。我尝试了
String.format()
,但运气不好。 有什么建议吗?

String.format()
用于将内容插入到特殊格式的字符串中,而不是以不同方式显示字符串。然而,JLabel和其他Swing组件确实允许HTML,这可能会满足您的需要

new JLabel("<html><pre>         Hoffenheim  1 : 0  Koeln</pre></html>");
new JLabel("<html><pre>             Bayern  2 : 1  HSV</pre></html>");

显然,您可以禁用边框等功能,这样用户就不会觉得它只是一段格式良好的文本。

从dimo414开始,您实际上可以使用HTML表

StringBuilder sb=新的StringBuilder(128);
某人加上(“”);
某人加上(“”);
某人加上(“”);
某人附加(“霍芬海姆”);
某人附加(“1”);
某人加上(“:”);
某人附加(“0”);
某人附加(“Koeln”);
某人加上(“”);
某人加上(“”);
某人追加(“拜仁”);
某人附加(“2”);
某人加上(“:”);
某人附加(“1”);
某人附加(“HSV”);
某人加上(“”);
某人加上(“”);
某人加上(“”);
label.setText(sb.toString());
虽然这要复杂得多,但它为您提供了更大的格式灵活性。

您可以使用HTML。详情请阅读。例如,您可以构建一个表,如下所示:

import javax.swing.JLabel;
导入javax.swing.JOptionPane;
公共类StringDemo{
公共静态void main(字符串arg[]){
StringBuilder buff=新的StringBuilder();
buff.追加(“”);
buff.append(String.format(“%s:%s”、“Hoffenheim 1”、“0 Koeln”);
buff.append(String.format(“%s:%s”、“拜仁2”、“1 HSV”);
buff.追加(“”);
showMessageDialog(null,新JLabel(buff.toString());
}
}

HTML渲染器不会自动删除空格吗?@MadProgrammer我不这么认为。如果空格是从
pre
元素中的任何位置修剪的,那么无论呈现它的是什么,都将是不正确的行为。它们不应该是这样,但我还没有测试JLabel中的
标记,所以我不确定。使用HTML来集中内容,就像OP寻找内容的方式一样,这在某种程度上需要一罐作品。我更倾向于通过布局管理器来做这件事——这是“正确”的方式。@AndrewThompson对不起,你的权利,错过了标签,我的错。谢谢你做到了!我在JLabel向左对齐的代码中遇到了问题,但我使用label.setHorizontalAlignment(JLabel.CENTER)对其进行了排序@用户1533166很高兴我能帮上忙!似乎
JTable
是显示此(表格)信息的更好组件。
| Hoffenheim  1 | : | 0  Koeln |
|     Bayern  2 | : | 1  HSV   |
StringBuilder sb = new StringBuilder(128);

sb.append("<html>");
sb.append("<table border='0'>");
sb.append("<tr>");
sb.append("<td align='right'>Hoffenheim</td>");
sb.append("<td align='center'>1</td>");
sb.append("<td align='center'>:</td>");
sb.append("<td align='center'>0</td>");
sb.append("<td align='left'>Koeln</td>");
sb.append("</tr>");
sb.append("<tr>");
sb.append("<td align='right'>Bayern</td>");
sb.append("<td align='center'>2</td>");
sb.append("<td align='center'>:</td>");
sb.append("<td align='center'>1</td>");
sb.append("<td align='left'>HSV</td>");
sb.append("</tr>");
sb.append("</table>");
sb.append("</html>");

label.setText(sb.toString());
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class StringDemo {

    public static void main(String arg[]){

        StringBuilder buff = new StringBuilder();
        buff.append("<html><table>");
        buff.append(String.format("<tr><td align='right'>%s</td><td>:</td><td>%s</td></tr>", "Hoffenheim  1", "0  Koeln"));
        buff.append(String.format("<tr><td align='right'>%s</td><td>:</td><td>%s</td></tr>", "Bayern  2", "1  HSV"));
        buff.append("</table></html>");

        JOptionPane.showMessageDialog(null, new JLabel(buff.toString()));
    }
}