Создание одной строки жирным шрифтом в JTextPane без использования HTML - PullRequest
3 голосов
/ 31 августа 2011

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

 Font font = new Font("Consolas", Font.BOLD, 11);
            textPane.setFont(font);
            textPane.setText(textPane.getText() + "\n" + getTimeStamp() + sender + ": " + message);
            textPane.setFont(defaultFont);

Как я могу это сделать?

Ответы [ 2 ]

7 голосов
/ 31 августа 2011

Самый простой способ сделать это - получить StyledDocument из JTextPane и использовать метод setCharacterAttributes ().

Метод setCharacterAttributes в объекте StyledDocument позволяет установить для определенного диапазона символов набор атрибутов, который может включать BOLD.

См. Javadoc для получения дополнительной информации

Пример кода может быть

// set chars 4 to 10 to Bold
SimpleAttributeSet sas = new SimpleAttributeSet(); 
StyleConstants.setBold(sas, true);
textPane.getStyledDocument().setCharacterAttributes(4, 6, sas, false);
2 голосов
/ 12 мая 2013

Следует обратить внимание на то, чтобы убедиться, что у используемого вами семейства шрифтов действительно жирный шрифт.Я начал с использования Monaco (на OSX), который включает только обычный шрифт.Ничего не работало, пока я не переключился на Menlo, в котором была запись Menlo Bold.

Вот код, основанный на примере Oracle.

StyledDocument document = textPane.getStyledDocument ();
Style defaultStyle =
      StyleContext.getDefaultStyleContext ().getStyle (StyleContext.DEFAULT_STYLE);
Style regular = document.addStyle ("regular", defaultStyle);

StyleConstants.setBackground (regular, backgroundColor);
StyleConstants.setFontFamily (regular, "Menlo");
StyleConstants.setFontSize (regular, 14);

blackStyle = document.addStyle ("BlackStyle", regular);
StyleConstants.setForeground (blackStyle, Color.black);

redStyle = document.addStyle ("RedStyle", regular);
StyleConstants.setForeground (redStyle, Color.red);
StyleConstants.setBold (redStyle, true);
...