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

Java如何保留从字符串到JLabel的换行符?,java,string,swing,newline,jlabel,Java,String,Swing,Newline,Jlabel,我需要从包含多行的数据库中生成文本,但当我将它们放入标签时,所有文本都变成了同一行。 我试着使用JTextArea,它可以工作,但是,由于某种原因,它在一个1列的BoxLayout面板中打乱了所有其他组件的对齐方式。。。我希望所有内容都向左对齐。任何帮助都将不胜感激!谢谢 但是,由于某些原因,它在1列BoxLayout面板中扰乱了所有其他组件的对齐 与每个组件的setAlignmentX(…)方法相关 JLabel使用0.0f(用于左对齐)。JTextArea和JScrollPane使用0.5f

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

但是,由于某些原因,它在1列BoxLayout面板中扰乱了所有其他组件的对齐

与每个组件的
setAlignmentX(…)
方法相关

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

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

解决方案是更改文本区域或滚动窗格(添加到BoxLayout中的任何组件)的对齐方式

因此,基本准则是:

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

newLabel.setText(a);

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

此问题最初标记为的副本:。该帖子中的所有解决方案都建议使用HTML。OP已经声明使用JTextArea是可行的,但是现在的问题是BoxLayout的对齐问题。我已重新打开问题以解决对齐问题。您好,谢谢您的回复,我不想使用html,因为所有字符串都是从用户输入文本字段生成的,并由系统自动显示,因此,如果我要使用html,我将需要读取整个字符串并将所有新行替换为
,并添加html开头和结尾,其中我不知道文本字段中的新行是什么。嘿,thx!这解决了我的问题!我以前尝试过这个解决方案,但是我没有更改textArea的对齐方式,而是尝试更改其他组件的对齐方式,因为我发现是其他组件失去了对齐!非常感谢!
JLabel label = new JLabel(...);
JTextArea textArea = new JTextArea(...);
textArea.setAlignmentX(0.0f);
JPanel panel = new BoxLayout(...);
panel.add(label);
panel.add(textArea);