。如何在多个jtextpanes上传播我的文字?

问题描述 投票:1回答:1

我在java中构建一个简单的单词编辑器。目前,一切正常。现在我想创建“页面”,就像在单词中一样。表示页面的JTextPane应该检查它是否已满,然后在其下创建一个新的JTextpane。使用滚动条,我可以在它们之间滚动。到目前为止,这不会有问题。但是,所有页面都应属于单个文档,如果我要删除第2页上的一行,则每个页面上的每一行都会向上移动。 (例如)有一种简单的方法可以做到这一点,还是我必须为每个JTextPane创建DocumentListener,更改每次更改的所有内容?另外,有没有办法在多个页面上扩展选择?

就个人而言,我还没有尝试任何东西,因为在写自己的角落之前我想要一些提示。我认为我可以使页面不可编辑,而是使用caretListener来检查用户点击的位置,编辑包含实际文档的不可见的无限JTextPane,它将内容写入可见页面。

java swing jtextpane
1个回答
0
投票

很多未知数,但也许以下内容会给你一些思考。

所有页面都应属于单个文档,

同意。

表示页面的JTextPane应该检查它是否已满,然后在其下创建一个新的JTextpane

也许将每个文本窗格添加到JScrollPane,但不显示滚动窗格的滚动条或边框。

如果我要在第2页上删除一行,则每个其他页面上的每一行都会向上移动

您需要手动控制每个滚动窗格的视口。第一页将视口定位在偏移0处。下一页将视口定位在表示页面高度的偏移处。

然后,对文档的任何更改都应自动反映在所有文本窗格中。

您可能还需要使用setAutoScrolls(false)来阻止视口在拖动鼠标时滚动。

有没有办法在多个页面上扩展选择?

选择是文本窗格的属性,而不是文档。

不确定当您尝试将鼠标从一个文本窗格拖动到另一个文本窗格时会发生什么。

我猜你可能需要一些特殊的逻辑。也许使用mouseEntered / Exited事件来触发这种类型的处理。

© www.soinside.com 2019 - 2024. All rights reserved.