У меня возникают проблемы с тем, чтобы включить разрыв строки в StringBuilder для отображения в JLabel.
Я нашел здесь пару аналогичных проблем, например [здесь] Проблемы с переносом строки с int в 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);
Еще раз спасибо всем.