2016-10-16 8 views
1

Я использую Java JDK 1.6 и имею проблему с использованием JTextPane для отображения текста с моноширинным шрифтом. Как только я добавлю символ UTF8, высота строки в текстовой области будет уменьшена (для всего текста уже на панели, а также для всего текста, добавленного позже). Как я могу избежать этого? Я хотел бы иметь нормальную высоту линии.Java JTextPane меняет высоту строки при добавлении символа UTF8

Вот некоторые примеры кода:

class AttributedTextPane extends JTextPane 
    { 

     private DefaultStyledDocument defaultStyledDocument; 

     protected AttributedTextPane() 
     { 
      this.defaultStyledDocument = new DefaultStyledDocument(); 
      this.setDocument(defaultStyledDocument); 

      this.setContentType("text/plain"); 
      ... 
     } 
    } 
    ... 

Эта панель интегрирована в JInternalFrame. Создание панели и установив нужный моноширинный шрифт:

Font font = new Font("DejaVu Sans Mono", Font.PLAIN, 11); 
    AttributedTextPane pane = new AttributedTextPane(); 
    pane.setFont(font); 

Чтобы отобразить нужный текст, я называю pane.setText (...); Как только я добавлю символ UTF8, высота строки изменится, см. Снимок экрана на http://i.imgur.com/Fq7XBJB.png. Есть ли способ избежать изменения высоты строки? Спасибо, Deejay

ответ

0

Вы можете попробовать установить/принуждая высоту строки так:

MutableAttributeSet jTextPaneSet = new SimpleAttributeSet(pane.getParagraphAttributes()); 
StyleConstants.setLineSpacing(jTextPaneSet, 1.5f); //replace float 1.5f with your desired line spacing/height 

Источник:

http://docs.oracle.com/javase/8/docs/api/javax/swing/JTextPane.html#setParagraphAttributes(javax.swing.text.AttributeSet,%20boolean)

https://docs.oracle.com/javase/7/docs/api/javax/swing/text/StyleConstants.html#setLineSpacing(javax.swing.text.MutableAttributeSet,%20float)

+0

Спасибо вам помочь, но с использованием StyleConstants .setLineSpacing (...), похоже, не помогает. Я протестировал его, но ничего не изменил. Изменение другого параметра стиля (например, цвета, полужирный, курсив) отлично работает, но нет межстрочного интервала. – Deejay

+1

Извините, вам нужно исправить мой последний комментарий. Кажется, было уже поздно, и поэтому я допустил некоторые ошибки. Использование StyleConstants.setLineSpacing (...) отлично работает, по крайней мере, если вы не пропустите установку новых атрибутов на панель: 'MutableAttributeSet jTextPaneSet = new SimpleAttributeSet (pane.getParagraphAttributes()); StyleConstants.setLineSpacing (jTextPaneSet, 0.2f); pane.setParagraphAttributes (jTextPaneSet, true); ' Спасибо, sorifiend! – Deejay

Смежные вопросы