.Как я могу распределить текст по нескольким jtextpanes? - PullRequest
1 голос
/ 19 апреля 2019

Я строю простой текстовый редактор в Java. В настоящее время все работает нормально. Теперь я хочу создать «Страницы», как на слове. Предполагается, что JTextPane, представляющий страницу, проверяет, заполнена ли она, а затем создает новую JTextpane под ней. С помощью полосы прокрутки я мог бы прокручивать между ними. Пока это не будет проблематичным. Тем не менее, все страницы должны принадлежать одному документу, и если бы я должен был удалить строку, скажем, на странице 2, каждая строка на каждой другой странице будет перемещена вверх. (Например) Есть ли простой способ сделать это, или мне придется создавать DocumentListeners для каждой JTextPane, меняя все при каждом изменении? Кроме того, есть ли возможность расширить выборки на несколько страниц?

Лично я еще ничего не пробовал, так как хочу получить несколько советов, прежде чем записывать себя в угол. Я подумал, что смогу сделать страницы недоступными для редактирования, и вместо этого использовать caretListener для проверки позиции, по которой щелкает пользователь, для редактирования невидимого бесконечного JTextPane, содержащего фактический документ, который будет записывать его содержимое на видимые страницы.

1 Ответ

0 голосов
/ 19 апреля 2019

Множество неизвестных, но, возможно, следующее заставит вас задуматься.

все страницы должны принадлежать одному документу,

Согласовано.

Предполагается, что JTextPane, представляющий страницу, проверяет, заполнена ли она, а затем создает новую JTextpane под ней

Возможно, добавьте каждую текстовую панель в JScrollPane, но нене отображать полосы прокрутки или границу панели прокрутки.

если бы я удалил строку на, скажем, странице 2, каждая строка на каждой другой странице будет перемещена вверх

Вам потребуется вручную управлять окном просмотра каждой панели прокрутки.Первая страница будет позиционировать область просмотра со смещением 0. Следующая страница будет позиционировать область просмотра со смещением, представляющим высоту вашей страницы.

Тогда любые изменения в документе должны автоматически отражаться на всех текстовых панелях.

Возможно, вам также понадобится использовать setAutoScrolls(false) для предотвращения прокрутки окна просмотра при перетаскивании мыши.

Есть ли способ расширить выборки на несколько страниц?

Выделение - это свойство текстовой панели, а не документа.

Не уверен, что произойдет, если вы попытаетесь перетащить мышь из одной текстовой панели в другую.

Полагаю, вам может понадобиться какая-то особая логика.Возможно использование событий mouseEntered / Exited для запуска этого типа обработки.

...