Stringbuilder に含まれる改行を JLabel に表示するのに問題があります。
ここで解決された同様の問題がいくつか見つかりました。たとえば、[ここ] JLabel で int を使用して改行する問題と [ここ]最後の行を除くすべての行に改行文字を追加するにはどうすればよいですか? 、他にもいくつかありますが、どれも私にはうまくいかないようです。
System.out に出力すると問題なく動作し、毎回新しい行が表示されますが、JLabel に渡すとすべてが 1 行として表示されます。
これは、改行文字を追加しようとしたコードの現在のバージョンであり、メインの宣言にも含まれています。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 に変更することで解決しました。問題の 2 行は次のとおりです。
JTextPane filler = new JTextPane();
filler.setText(text);
皆さんに改めて感謝します。