Выделение текста курсивом в JTextPane

234
27 декабря 2017, 20:43

Я создал JTextPane и кнопку которая будет делать текст «курсивом». Осуществил изменения шрифта так:

jTextPane1.setFont(new Font("Courier New", Font.ITALIC, 16));

Вот только изменяется весь текст, а не то что пишу после изменения. Как можно сделать чтобы то, что было ранее написано не подлежало редактированию.

И есть ли в Java возможность работать с выделенным текстом? Например, чтобы я выделил текст и когда нажимаю на кнопку, то изменяется только выделенная часть текста?

Answer 1

Для этого можно воспользоваться действием StyledEditorKit.ItalicAction, которое включает/отключает выделение курсивом для текстового компонента. При выполнении действие будет применено также для выделенного текста.

Действие можно задать кнопке. Например:

JButton italicButton = new JButton(new StyledEditorKit.ItalicAction());
italicButton.setText("Italic");

При нажатии на такую кнопку для JTextPane, на котором установлен фокус, будет включаться/отключаться выделение курсивом.

Подробнее настройка текстовых компонентов Swing разбирается в уроке «Text Component Features» из Java Tutorials.

READ ALSO
Device Owner не работает в Android TV Box

Device Owner не работает в Android TV Box

Я хочу установить мое приложение в качестве владельца устройства на Android TV Box, и я получаю следующее исключение

276
Создание 3-х динамических макетов с Custom ViewAdapter

Создание 3-х динамических макетов с Custom ViewAdapter

Доброго времени суток! Делаю вёрстку динамического каталога с помощью адаптеровПриложение будет отлавливать JSON с данными и впихивать их в 3 фрагмента

177
не рисуется линия в Swing!

не рисуется линия в Swing!

Только на чал изучать SwingНаписал простенький код, чтобы в окне рисовать двумерные фигуры (в моем случае это линия)

172