2015-07-03 43 views
0

我有StringBuffer被設置爲JTextArea。現在我想根據一些條件,在StringBuffer的部分字符串被強調如何做到這一點?設置下劃線的文本到文本區域

可以說,我需要在價格4.00,但與蘋果的文字下劃線,顯示一個類似求購蘋果。

+1

甲'JTextArea'支持純文本,這意味着單個字體(臉,風格和尺寸)。爲了完成不同樣式的文本部分,我們需要使用像JLabel這樣的組件或者更接近JTextArea的JEditorPane組件。 –

+0

但在我的應用程序中,我需要將文字打包。 JLabel不支持文字換行。 JEdi​​torPane如何? – MRavindran

+0

*「JEditorPane怎麼樣?」*好吧..那怎麼樣?你在問什麼?順便說一句 - 注意['JLabel'(當顯示HTML時)**可以**換行](http://stackoverflow.com/a/14011645/418556)。 –

回答

2

使用JTextPane。它默認支持文字換行,您可以設置任何文本的屬性。

JTextPane textPane = new JTextPane(); 
textPane.setText("one\ntwo\nthree\nfour\nfive\nsix\nseven\neight"); 
StyledDocument doc = textPane.getStyledDocument(); 

// Define a keyword attribute 

SimpleAttributeSet keyWord = new SimpleAttributeSet(); 
StyleConstants.setForeground(keyWord, Color.RED); 
StyleConstants.setBackground(keyWord, Color.YELLOW); 
StyleConstants.setUnderline(keyWord, Boolean.TRUE); 
StyleConstants.setBold(keyWord, true); 

// Change attributes on some text 

doc.setCharacterAttributes(20, 4, keyWord, false); 

// Add some text 

try 
{ 
    doc.insertString(0, "Start of text\n", keyWord); 
} 
catch(Exception e) {} 

您還可以創建操作來更改任何選定文本的屬性。請閱讀Text Component Features上的Swing教程部分以獲取更多信息和工作示例。

+0

謝謝!有效。 – MRavindran