Java 如何保留从 String 到 JLabel 的换行符?

Java how to preserve newline from String to JLabel?

JLabel newLabel = new JLabel();
String a = b;//b is String from database.

newLabel.setText(a);

我需要生成从我的数据库中提取的包含多行的文本,但是当我将它们放入标签时,所有文本都变成了同一行。 我尝试使用 JTextArea 并且它可以工作,但是由于某种原因它弄乱了 1 列 BoxLayout 面板中所有其他组件的对齐方式......我希望所有内容都向左对齐。任何帮助将非常感激!谢谢

however, for some reason it messed with all the other component's alignment in a 1 column BoxLayout panel

与各个组件的setAlignmentX(...)方法有关。

JLabel 使用 0.0f(用于左对齐)。 JTextArea 和 JScrollPane 使用 0.5f(用于中心对齐)。

使用具有不同对齐方式的组件将在使用 BoxLayout 时导致对齐问题。

解决方案是更改文本区域或滚动窗格的对齐方式(无论您添加到 BoxLayout 的哪个组件)。

所以基本代码是:

JLabel label = new JLabel(...);
JTextArea textArea = new JTextArea(...);
textArea.setAlignmentX(0.0f);
JPanel panel = new BoxLayout(...);
panel.add(label);
panel.add(textArea);

现在两个组件都将左对齐。