我在尝试让 Stringbuilder 中包含的换行符出现在 JLabel 中时遇到问题。
我发现这里解决了几个类似的问题,例如 [这里] Problems to linebreak with an int in JLabel和 [这里]如何为除最后一行之外的所有行添加换行符?,以及其他一些人,但他们似乎都不适合我。
打印到 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);
再次感谢大家。