2013-11-25 2 views
2

Я пытаюсь сделать BOLD текст в JPane, но он не работает. Если это ИТАЛИЯ или UNDERLINE его рабочий тон. Ниже мой код.JtextPane - невозможно использовать BOLD

String strText = "<b><i><u>Testing</b></i></u>"; 
javax.swing.text.Style style1 = jTextPane1.addStyle("I'm a Style", null); 
StyleConstants.setForeground(style1, Color.BLACK); 
StyleConstants.setFontSize(style1, 15); 
StyleConstants.setFontFamily(style1, "Arial Unicode MS"); 
if(strText.contains("<b>")) 
         { 
          StyleConstants.setBold(style1, true); 
          strText = strText.replace("<b>", " "); 
          strText = strText.replace("</b>", " "); 

         } 
         if(strText.contains("<i>")) 
         { 
          StyleConstants.setItalic(style1, true); 
          strText = strText.replace("<i>", " "); 
          strText = strText.replace("</i>", " "); 

         } 
         if(strText.contains("<u>")) 
         { 
          StyleConstants.setUnderline(style1, true); 
          strText = strText.replace("<u>", " "); 
          strText = strText.replace("</u>", " "); 

         } 
try { 
strText = strText.trim(); 
doc.insertString(doc.getLength(), strText, style1); 
} 

UNDERLINE и ITALIC работает отлично тем BOLD не работает в соответствии ожидается. Текст не BOLDED. Пожалуйста, совет, где я сделал ошибки.

+0

'StyleConstants.setBold (style1, ложь);' ... Do вы действительно хотите установить его в false? – Vulcan

+0

привет, я думаю, что проблема не в этой части кода, это просто хорошо – BilalDja

+0

Вот полный пример [здесь] (http://stackoverflow.com/a/15600689/230513). – trashgod

ответ

3

Исходя из этого example фрагмент ниже иллюстрирует три взаимосвязанных стилей на основе того же шрифта и размер:

image

SimpleAttributeSet normal = new SimpleAttributeSet(); 
StyleConstants.setFontFamily(normal, "SansSerif"); 
StyleConstants.setFontSize(normal, 16); 

SimpleAttributeSet bold = new SimpleAttributeSet(normal); 
StyleConstants.setBold(bold, true); 

SimpleAttributeSet italic = new SimpleAttributeSet(normal); 
StyleConstants.setItalic(italic, true); 

doc.insertString(doc.getLength(), s + "\n", normal); 
doc.insertString(doc.getLength(), s + "\n", bold); 
doc.insertString(doc.getLength(), s + "\n", italic); 
+0

Вы печатаете 3 линии с 3 различными стилями. Как я это делаю, если хочу напечатать 1 строку с BOLD и ITALIC одновременно. –

+0

Вы можете многократно добавлять текст без новой строки для получения разных стилей в одной строке. – trashgod

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