动态添加的内容无法正确滚动(JScrollPane 内的 JTextPane)
Dynamically added content doesn't scroll correctly (JTextPane inside JScrollPane)
JScrollPane(JTextPane)
的以下行为似乎超出了我的薪资等级:
我在我的框架中添加了一个 textPane inside a scrollPane。
textPane = new JTextPane();
scrollPane = new JScrollPane(textPane);
如果我通过 textPane.setText("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM")
设置 textPane 的内容,textPane 正在展开并且 scrollPane 正在正常工作。
但是,如果我使用 textPane
重定向 out
并使用 MessageConsole 重定向 err
,它会进行某种自动换行。我检查了 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 个多小时未成功,在此非常感谢您的帮助。
在第一种情况下,当您添加一长串没有空格的文本时,没有地方可以将文本拆分为新行,因此首选宽度似乎变成了长行的宽度文本。
所有其他行的文本不需要换行,因为它们适合首选宽度。
但是,在第二种情况下,存在空格,因此文本窗格的默认行为是在视口填满后自动换行。
这种换行是由 JTextPane 的 Scrollable
接口的默认实现引起的。 getScrollableTracksViewportWidth()
方法 returns true
的默认实现,它基本上尝试将所有文本调整到视口的宽度,使其在可能的情况下换行。
如果您不想让文字换行,请查看 No Wrap Text Pane。它显示了如何通过使用 getScrollableTracksViewportWidth()
方法 return false
.
来更改文本窗格的默认 Scrollable
行为
JScrollPane(JTextPane)
的以下行为似乎超出了我的薪资等级:
我在我的框架中添加了一个 textPane inside a scrollPane。
textPane = new JTextPane();
scrollPane = new JScrollPane(textPane);
如果我通过 textPane.setText("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM")
设置 textPane 的内容,textPane 正在展开并且 scrollPane 正在正常工作。
但是,如果我使用 textPane
重定向 out
并使用 MessageConsole 重定向 err
,它会进行某种自动换行。我检查了 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 个多小时未成功,在此非常感谢您的帮助。
在第一种情况下,当您添加一长串没有空格的文本时,没有地方可以将文本拆分为新行,因此首选宽度似乎变成了长行的宽度文本。
所有其他行的文本不需要换行,因为它们适合首选宽度。
但是,在第二种情况下,存在空格,因此文本窗格的默认行为是在视口填满后自动换行。
这种换行是由 JTextPane 的 Scrollable
接口的默认实现引起的。 getScrollableTracksViewportWidth()
方法 returns true
的默认实现,它基本上尝试将所有文本调整到视口的宽度,使其在可能的情况下换行。
如果您不想让文字换行,请查看 No Wrap Text Pane。它显示了如何通过使用 getScrollableTracksViewportWidth()
方法 return false
.
Scrollable
行为