Java 包括StringBuilder中的换行符

Java 包括StringBuilder中的换行符,java,swing,newline,jlabel,stringbuilder,Java,Swing,Newline,Jlabel,Stringbuilder,我在尝试将Stringbuilder中包含的换行符显示在JLabel中时遇到问题 我发现这里解决了两个类似的问题,例如[这里]和[这里],还有一些其他问题,但它们似乎都不适合我 当打印到System.out时,它工作正常,每次我都会得到一行新行,但当传递到JLabel时,所有内容都显示为一行 下面是代码的当前版本,它试图附加一个换行符,并在主声明中包含一个换行符。在传递给JLabel时,两者都不具有任何效力: public void layoutCenter() { JPanel cen

我在尝试将Stringbuilder中包含的换行符显示在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;
}

再次感谢大家。

您必须使用和
在JLabel Swing组件中获得换行符

您必须使用和
在JLabel Swing组件中获得换行符

如果您绝对必须使用
JLabel
,那么我建议每行使用一行。

如果您绝对必须使用
JLabel
,那么我建议每行使用一行。

您可以通过将文本包装在HTML标记中并使用br标记添加新行,使JLabel具有多行


如果你有自动包装的消息,我建议使用JTexrArea。您可以将其设置为不可编辑,并对其进行样式设置,使其看起来像一个标签

通过将文本包装在HTML标记中并使用br标记添加新行,可以使JLabel具有多行


如果你有自动包装的消息,我建议使用JTexrArea。您可以将其设置为不可编辑,并对其进行样式设置,使其看起来像一个标签

JLabel
未指定用于保存多行文档,有两种选择(默认情况下接受换行符或制表符)

  • 若文档不能以某种方式进行装饰或样式化,那个么使用

  • 在这种情况下,可以对文档进行修饰或设置样式,以便使用


JLabel
未指定用于保存多行文档,有两种选择(默认情况下接受换行符或制表符)

  • 若文档不能以某种方式进行装饰或样式化,那个么使用

  • 在这种情况下,可以对文档进行修饰或设置样式,以便使用


您可以查看本教程:


其中一个例子是使用html将JButton文本设为两行。它应该非常相似。

您可以查看本教程:


其中一个例子是使用html将JButton文本设为两行。它应该非常相似。

可能重复的可能重复的感谢吉尔伯特,我已经尝试使用这个:mList.append(“内存位置:“+I+”+memLocList[I]+”
”;但这也没什么好运气。@Robert:也许我不明白你写了什么,但是休息后你没有文本。@Gilbert:对不起,我的补充意见不是很清楚。这是循环的一部分,我希望在每次迭代后都有一个换行。@Robert:好的。正如您所评论的,JTextPane更适合您想要的东西。谢谢Gilbert,我已经尝试过使用它:mList.append(“内存位置:“+I+”+memLocList[I]+”
”;但这也没什么好运气。@Robert:也许我不明白你写了什么,但是休息后你没有文本。@Gilbert:对不起,我的补充意见不是很清楚。这是循环的一部分,我希望在每次迭代后都有一个换行。@Robert:好的。正如您所评论的,JTextPane更适合您想要的内容。谢谢您,mKorbel,我将其更改为JTextPane,现在格式正确了。非常感谢。顺便说一句,虽然这很有效,但它需要一段时间才能启动。有没有更有效的方法?(没有明显的“不要使用Java”)所有编程语言都有相同的开始,加上citibus,谢谢你,mKorbel,我把它改成了JTextpane,现在格式正确了。非常感谢。顺便说一句,虽然这很有效,但它需要一段时间才能启动。有没有更有效的方法?(没有明显的“不要使用Java”)所有编程语言都有相同的启动,加上citibus,
JTextPane filler = new JTextPane();
    filler.setText(text);