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