gpt4 book ai didi

java - 动态添加的内容无法正确滚动(JScrollPane 内的 JTextPane)

转载 作者:行者123 更新时间:2023-12-02 10:53:48 26 4
gpt4 key购买 nike

JScrollPane(JTextPane) 的以下行为似乎超出了我的工资水平:

我已在我的框架的scrollPane 内添加了一个textPane。

    textPane = new JTextPane();
scrollPane = new JScrollPane(textPane);

If I set the content of the textPane via textPane.setText("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"), textPane is expanding and scrollPane is doing its job correctly.

enter image description here

但是,如果我使用 textPane 使用 MessageConsole 重定向 outerr ,它会进行某种自动换行。我检查了 MessageConsole 的源代码,它没有改变 textPane 的任何自动换行行为。看来 textPane.getDocument().insertString(.) 会导致 textPane 无法正确展开。

    MessageConsole mc = new MessageConsole(textPane);
mc.redirectOut();
mc.redirectErr(Color.RED, null);
mc.setMessageLines(100);

enter image description here

通过 textPane.getDocument().insertString(.) 提供内容时,如何避免发生自动换行?我已经尝试删除这个换行符超过 3 个小时了,但没有成功,非常感谢您的帮助。

最佳答案

在第一种情况下,当您添加一长串不带空格的文本时,没有地方可以将文本拆分为新行,因此看起来首选宽度变成了长文本行的宽度.

所有其他行上的文本不需要换行,因为它们适合首选宽度。

但是,在第二种情况下,存在空格,因此文本 Pane 的默认行为是在视口(viewport)已满后自动换行。

这种换行是由Scrollable的默认实现引起的。 JTextPane 的接口(interface)。默认实现getScrollableTracksViewportWidth()方法返回 true ,它基本上尝试让所有文本适合视口(viewport)的宽度,使其在可能的情况下换行。

如果您不希望文本换行,请查看 No Wrap Text Pane 。它显示了如何更改默认值 Scrollable文本 Pane 的行为通过具有 getScrollableTracksViewportWidth()方法返回false .

关于java - 动态添加的内容无法正确滚动(JScrollPane 内的 JTextPane),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51940037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com