【发布时间】:2012-06-26 13:10:15
【问题描述】:
我在尝试让 Stringbuilder 中包含的换行符出现在 JLabel 中时遇到问题。
我发现这里解决了几个类似的问题,例如[这里] Problems to linebreak with an int in JLabel 和 [这里] How do I append a newline character for all lines except the last one? 以及其他一些,但它们似乎都不适合我。
当打印到 System.out 时,它工作正常,我每次都会得到一个新行,但是当传递给 JLabel 时,所有内容都显示为一行。
这是当前版本的代码,它试图添加一个换行符,并在主声明中包含一个。传递给 JLabel 时两者都没有任何效果:
public void layoutCenter() {
JPanel central = new JPanel();
add(central, BorderLayout.CENTER);
JTabbedPane tabs = new JTabbedPane();
this.add(tabs);
// memory tab
StringBuilder mList = new StringBuilder();
memLocList = new Memory[MEM_LOCATIONS]; //Memory is a separate class
for (int i = 0; i < memLocList.length; i++) {
mList.append("\n");
memLocList[i] = null;
mList.append("Memory location: " + i + " " + memLocList[i] + "\n");
}
System.out.println(mList.toString());
JComponent memTab = makeTextPanel(mList.toString());
tabs.addTab("Memory", memTab);
}
protected JComponent makeTextPanel(String text) {
JPanel panel = new JPanel(false);
JLabel filler = new JLabel(text);
panel.add(filler);
return panel;
}
我也尝试过使用 System.getProperty(line.separator) 获得类似的结果,但想不出其他方法可以尝试,所以我想在这里寻求帮助。
谢谢, 罗伯特。
-编辑-
感谢 mKorbel,将 JLabel 更改为 JTextPane 解决了这个问题。 有问题的两行是:
JTextPane filler = new JTextPane();
filler.setText(text);
再次感谢大家。
【问题讨论】:
-
Newline in JLabel 的可能副本
标签: java swing newline jlabel stringbuilder