Spec-Zone .ru
спецификации, руководства, описания, API
|
Два класса Swing поддерживают разработанный текст: JEditorPane
и его подкласс JTextPane
JEditorPane
class является основой для стилизованных текстовых компонентов Swing и обеспечивает механизм, через который можно добавить поддержку пользовательских текстовых форматов. Если Вы хотите нестилизованный текст, используйте текстовую область вместо этого.
Можно видеть область редактора и текстовую область в использовании, выполняя TextSamplerDemo. Вот изображение TextSamplerDemo
пример.
Нажмите кнопку Launch, чтобы работать, TextSamplerDemo, используя
TextSamplerDemo
пример только начинает демонстрировать возможности областей редактора и текстовых областей. Однако, верхняя правая область редактора иллюстрирует удобную, удобную в работе функцию: это выводит на экран недоступную для редактирования справочную информацию, загруженную из URL. Текстовая область в нижнем правом демонстрирует, что можно легко встроить изображения и даже компоненты непосредственно в текстовые области.
Если Вы нуждаетесь в абсолютной системе справочной информации, смотрите на
Текстовый API Swing мощен и огромен, и мы могли посвятить всю книгу только использованию областей редактора и текстовых областей. Этот раздел представляет их возможности, подсказки предложений, на котором Вы могли бы хотеть использовать, и указывает другим источникам информации.
Одна задача, которую можно выполнить, не зная ничто о текстовой системе Swing, выводит на экран текст от URL. Вот код от TextSamplerDemo.java
это создает недоступную для редактирования область редактора, которая выводит на экран текст, отформатированный с HTML-тэгами.
JEditorPane editorPane = new JEditorPane(); editorPane.setEditable(false); java.net.URL helpURL = TextSamplerDemo.class.getResource( "TextSamplerDemoHelp.html"); if (helpURL != null) { try { editorPane.setPage(helpURL); } catch (IOException e) { System.err.println("Attempted to read a bad URL: " + helpURL); } } else { System.err.println("Couldn't find file: TextSamplerDemoHelp.html"); } //Put the editor pane in a scroll pane. JScrollPane editorScrollPane = new JScrollPane(editorPane); editorScrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); editorScrollPane.setPreferredSize(new Dimension(250, 145)); editorScrollPane.setMinimumSize(new Dimension(10, 10));
Код использует конструктора по умолчанию, чтобы создать область редактора, затем вызывает setEditable(false)
таким образом, пользователь не может отредактировать текст. Затем, код создает URL
объект, и вызовы setPage
метод с этим.
setPage
метод открывает ресурс, на который указывает URL, и выясняет формат текста (который является HTML в примере). Если текстовый формат известен, область редактора инициализирует себя с текстом, найденным в URL. Стандартная область редактора может понять простой текст, HTML, и RTF. Отметьте, что страница могла бы быть загружена асинхронно, который сохраняет GUI быстро реагирующим, но означает, что недопустимо рассчитывать на данные, полностью загружаемые после звонка setPage
возвраты.
Чтобы использовать области редактора и текстовые области, Вы должны понять текстовую систему, которая описывается в текстовых Компонентных Функциях. Несколько фактов об областях редактора и текстовых областях рассеиваются всюду по тому разделу. Здесь мы перечисляем факты снова и обеспечиваем немного больше детали. Информация здесь должна помочь Вам понять различия между областями редактора и текстовыми областями, и когда использовать который.
setPage
метод. JEditorPane
class также предоставляет конструкторам, которые позволяют Вам инициализировать область редактора от URL. JTextPane
У class нет таких конструкторов. См. Используя Редактора Пэйна, чтобы Вывести на экран текст От URL для примера, который использует эту функцию, чтобы загрузить недоступную для редактирования область редактора отформатированным HTML текстом. Знайте, что документ и набор редактора могли бы измениться при использовании setPage
метод. Например, если область редактора будет содержать простой текст (значение по умолчанию), и Вы загружаете это HTML, то документ изменится на HTMLDocument
экземпляр и набор редактора изменятся на HTMLEditorKit
экземпляр. Если Ваша программа использует setPage
метод, удостоверьтесь, что Вы корректируете свой код для возможных изменений к документу области и экземплярам набора редактора (слушатели документа перерегистра на новом документе, и так далее).
StyledDocument
интерфейс. HTMLDocument
и RTFDocument
оба StyledDocuments
таким образом, HTML и RTF работают как ожидалось в пределах текстовой области. Если Вы загружаете текстовую область простым текстом, хотя, текстовый документ области не является a PlainDocument
поскольку Вы могли бы ожидать, но a DefaultStyledDocument
.registerEditorKitForContentType
метод, чтобы зарегистрировать Ваш набор в JEditorPane
class. Регистрируя набор редактора таким образом, все области редактора и текстовые области в Вашей программе будут в состоянии считать, записать, и отредактировать новый формат. Однако, если новый набор редактора не является a StyledEditorKit
, текстовые области не будут поддерживать новый формат.StyledDocument
интерфейс. Текстовый пакет Swing обеспечивает реализацию по умолчанию этого интерфейса, DefaultStyledDocument
, который является документом, что текст разделяет использование на области по умолчанию. Текстовая область также требует, чтобы ее набор редактора был экземпляром a StyledEditorKit
(или подкласс). Знайте что read
и write
методы для StyleEditorKit
работа с простым текстом.JTextPane
САМ class содержит много методов для того, чтобы работать со стилями, которые просто вызывают методы в его документе или наборе редактора.JTextPane
class, можно встроить изображения и компоненты в текстовой области. Можно встроить изображения в область редактора, также, но только включением изображений в HTML или файле RTF.Вот код от TextSamplerDemo
пример, который создает и инициализирует текстовую область.
String[] initString = { /* ... fill array with initial text ... */ }; String[] initStyles = { /* ... fill array with names of styles ... */ }; JTextPane textPane = new JTextPane(); StyledDocument doc = textPane.getStyledDocument(); addStylesToDocument(doc); //Load the text pane with styled text. try { for (int i=0; i < initString.length; i++) { doc.insertString(doc.getLength(), initString[i], doc.getStyle(initStyles[i])); } } catch (BadLocationException ble) { System.err.println("Couldn't insert initial text into text pane."); }
Кратко, этот код твердые коды, которые начальный текст в массив и создает и твердые коды несколько стилей — объекты, которые представляют различный абзац и символьные форматы — в другой массив. Затем, циклы кода по массивам, вставляет текст в текстовую область, и определяет стиль, чтобы использовать для вставленного текста.
Хотя это - интересный пример, который кратко демонстрирует несколько функций JTextPane
, "реальные" программы, вероятно, не инициализируют текстовую область этот путь. Вместо этого программа использовала бы область редактора, чтобы сохранить документ, который будет тогда использоваться, чтобы инициализировать текстовую область.
Этот раздел перечисляет часть API, связанного с областями редактора и текстом. Многие из самых полезных методов для JEditorPane и его подкласса JTextComponent
class. Можно найти таблицы API для JTextComponent
в текстовом Компонентном API. Также см. Класс JComponent, который описывает API, наследованный от JComponent
.
Метод или Конструктор | Описание |
---|---|
|
Создает область редактора, загруженную текстом в указанном URL. |
|
Загружает область редактора (или текстовую область) с текстом в указанном URL. |
|
Получает URL для области редактора (или текстовой области) текущая страница. |
Метод или Конструктор | Описание |
---|---|
|
Создает текстовую область. Дополнительный параметр определяет текстовую модель области. |
|
Получает или устанавливает текстовую модель области. |
Чтобы начать использовать текст, Вы могли бы хотеть выполнить эти программы и исследовать их код, чтобы счесть что-то подобным тому, что Вы хотите сделать.
Пример | Где Описано | Примечания |
---|---|---|
TextSamplerDemo |
Используя текстовые Компоненты | Использование каждый текстовый компонент Swing. |
TextComponentDemo |
Текстовые Компонентные Функции | Обеспечивает специализированную текстовую область. Иллюстрирует много текстовых компонентных функций, таких как отмена и восстановление, фильтры документа, слушатели документа, слушатели изменения каре, и как связать действия редактирования с меню и нажатия клавиш. |
TreeDemo |
Как Использовать Деревья | Использует область редактора, чтобы вывести на экран справку, загруженную из файла HTML. |
Учитесь редактировать текст HTML в JavaFX с