以下行为JScrollPane(JTextPane)似乎高于我的工资:我在一个 scrollPane 里面添加了一个 textPane 到我的框架中。 textPane = new JTextPane();
scrollPane = new JScrollPane(textPane);如果我通过 设置 textPane 的内容,则 textPanetextPane.setText("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM")正在扩展并且 scrollPane 正在正确执行其工作。但是,如果我textPane用来重定向out和err使用MessageConsole,它会进行某种自动换行。我检查了 MessageConsole 的来源,它不会改变textPane. 看来这textPane.getDocument().insertString(.)会导致textPane无法正确扩展。 MessageConsole mc = new MessageConsole(textPane);
mc.redirectOut();
mc.redirectErr(Color.RED, null);
mc.setMessageLines(100);当通过 提供内容时,如何避免发生自动换行textPane.getDocument().insertString(.)?我已经尝试删除此换行符 3 个多小时没有成功,非常感谢您的帮助。
1 回答
精慕HU
TA贡献1845条经验 获得超8个赞
在第一种情况下,当您添加一长串没有空格的文本时,文本没有地方可以拆分为新行,因此首选宽度似乎变成了长文本行的宽度。
所有其他行上的文本不需要换行,因为它们适合首选宽度。
但是,在第二种情况下,由于存在空格,因此文本窗格的默认行为是在视口已满时换行文本。
这种包装是由Scrollable
JTextPane 接口的默认实现引起的。该getScrollableTracksViewportWidth()
方法的默认实现返回true
,它基本上尝试适应视口宽度中的所有文本,使其在可能的情况下换行。
如果您不希望文本换行,请查看No Wrap Text Pane。它展示了如何Scrollable
通过让getScrollableTracksViewportWidth()
方法 return来更改文本窗格的默认行为false
。
添加回答
举报
0/150
提交
取消