Java 如何在JLabel中格式化文本
我需要以这种格式显示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
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()));
}
}