Я пытаюсь создать редактор без полос прокрутки с помощью jtextarea, поэтому, если текст слишком длинный, чтобы вписаться в jtextarea, он должен быть разделен на более мелкие подстроки, которые можно редактировать в jtextarea, не показывая вертикальную полосу прокрутки потому что легко избавиться от горизонтального, используя setLineWrap и setWrapStyleWord. Я попытался использовать вертикальный scrollbar adjusmentListener, чтобы прослушать его изменения, но он не работает, потому что методы jextarea append и setText активированы в конце бизнес-логики, поэтому я попытался использовать многопоточность и SwingWorker для вызова этих методов, но также не работает. Я также пытался использовать repaint, revalidate и обновлять методы без надежды. пожалуйста, помогите мне передать эту проблему и заблаговременно.Как поместить текст в jtextcomponent
ответ
Благодарим вас за то, что вы и на воздушной подушке, и у Робин, я получил его, ваши ответы повлияли на меня правильно, я нашел точный ответ в книге «Core Swing: advanced programming», используя JTextArea.modelToView(), передавая длину документа JTextArea как Параметр this method возвращает объект Rectangle, координация которого представляет координацию конечного символа, а затем сравнивает эту координацию с нижним углом JTextArea, чтобы увидеть, достигнет ли этот конечный шар этому дну или нет.
Я пытаюсь разработать редактор без скроллинга с помощью JTextArea, поэтому, если текст слишком длинный, чтобы поместиться в JTextArea она должна быть разделена на более мелкие подстроки, которые могут быть изменены в пределах JTextArea, не показывая вертикальную полосу прокрутки, потому что это легко избавиться от горизонтального, используя setLineWrap и setWrapStyleWord.
Я не уверен, что полностью понимаю это. Может быть, вы можете объяснить дальше? Почему бы не разместить JTextarea внутри JScrollPane? Каково ваше желаемое поведение, если текст, который он содержит, больше, чем тот, который может отображать JTextArea?
Я попытался использовать вертикальную полосу прокрутки adjusmentListener слушать его изменения, но он не работает, потому что JTextArea Append и SetText методы активируются в конце бизнес-логики, так что я пытался использовать многопоточный и SwingWorker вызывать эти методы, но также не работает. Я также пытался использовать repaint, revalidate и обновлять методы без надежды.
Если вы хотите уловить введенный текст перед тем, как он зафиксирован для текстового компонента, рассмотрите возможность установки DocumentFilter в соответствующий документ JTextArea (PlainDocument).
Как уже было предложено наводнение на воздушной подушке, вы должны взглянуть на интерфейсы Document
, DocumentFilter
и/или DocumentListener
.
Регулируя те, у вас есть полный контроль над тем, какой текст отображается, когда кто-то хочет добавить текст. Например, вы можете удалить первую часть текста до/после добавления нового текста, что ограничивает количество строк/символов в документе.
Swing tutorial about textcomponents содержит такой пример в разделе Implementing a DocumentFilter, где DocumentSizeFilter
класса является тот, который вы ищете (не часть JDK, часть коды учебника Swing). Как уже было предложено в качестве комментария в этом образце кода, было бы возможно удалить первую часть документа при добавлении нового текста, который слишком долго будет содержать содержимое, но я оставлю это до вас, поскольку он помечен как домашнее задание.
Благодарим вас за ответ Robin, но DocumentSizeFilter нужно указать максимальное количество символов вручную, поэтому при изменении размера окна или изменении размера шрифта ScrollBar появится снова, мне нужно получить максимально отображаемое количество символов, разрешенное без появления ScrollBar и все проблемы исчезнут, спасибо большое – muaz
BTW это читатель документов как проект термина, а не домашнее задание;) спасибо Robin – muaz
Я предлагаю посмотреть, как получить getters на 'JTextArea' (' getRows', 'getColumns', ...). Я уверен, что вы можете что-то понять, чтобы избежать жесткого кодированного максимального количества символов и поддерживать текстовую область с динамическим размером – Robin
- 1. Как сделать каретку JTextComponent пропустить выбранный текст?
- 2. Разметка символов в JTextComponent
- 3. Как поместить текст в круг
- 4. Как поместить текст в шестнадцатеричный
- 5. Поместить текст в изображение
- 6. JTextComponent Update Synchronization
- 7. Отключить выбор двойного щелчка в JTextComponent
- 8. Получение текущего смещения в HTMLDocument JTextComponent
- 9. как поместить текст под значком
- 10. Android: Как поместить текст внизу?
- 11. Как поместить текст поверх изображения?
- 12. Как поместить текст в webview в android?
- 13. Как поместить текст в изображения в Swift?
- 14. Поместить текст в 3 колонки
- 15. Как поместить изображение за текст в CSS?
- 16. Как поместить текст поверх изображения в Sitecore?
- 17. Как поместить текст в центр его TextView?
- 18. Как поместить текст из счетчика в файл?
- 19. Как я могу поместить текст в css3
- 20. Как поместить текст XAML в richtextblock?
- 21. Android - Как поместить текст backgroud в EditText?
- 22. Как поместить текст в круговой div?
- 23. Как поместить длинный текст в кнопку?
- 24. Как поместить текст из файла в массив
- 25. Как поместить текст в полосу прокрутки?
- 26. Как поместить текст в текстовую область
- 27. Как поместить «текст» в базу данных?
- 28. Как поместить текст между участками в matplotlib
- 29. iOS: Как поместить текст UILabel в UITableViewCell?
- 30. Как поместить прокручиваемый текст в тег заголовка?
Спасибо большое * Hovercraft Full Eels * за ответ, дорогой, я не хочу показывать JScrollPane, потому что это предварительное требование домашней работы. – muaz
Однако; чтобы понять, что если String, который мне нужно установить или добавить в JTextArea, слишком длинная, и это приведет к отображению вертикальной полосы прокрутки, эта строка должна быть разделена на более короткие подстроки – muaz
, каждый из которых может быть установлен в JTextArea без отображения вертикального ScrollBar и последовательно показывать их в JTextArea в ответ на событие, такое как нажатие кнопки, так же как и DocumentFilter, помог мне с этим ??? thanks – muaz