JTextArea-JTextPane 解决文字对齐方式的问题转载自:http://www.blogjava.net/cerulean/archive/2010/03/
JTextArea->JTextPane 解决文字对齐方式的问题
转载自:http://www.blogjava.net/cerulean/archive/2010/03/10/314976.html
引子只是个小问题,JTextArea多行文本,想设置文字的对齐方式为居中对齐,却发现死活没有合适有效的方法,又试了JTextField和JLabel,都不理想。搜了一溜够看到JTextPane的解决方法,其实真是有点儿大材小用了。JTextPane里可以设置style,对齐方式、字体字号、颜色等等,并且还可以设置style的作用范围,挺方便的。另外,想把文字区域背景设为透明的也是在API中找了一通,才发现敢情就是setOpacity,呃,对这个单词实在是太不敏感了。。。。
?
把在coderanch上搜的例子贴在这里吧,以防以后忘了:
?

import?java.awt.*;??

import?javax.swing.*;??

import?javax.swing.text.*;??

???

public?class?Styling??

{??

????public?Styling()??

????{??

????????String?text?=?"To?refer?to?locations?within?the?sequence,?the?"?+??

??????????????????????"coordinates?used?are?the?location?between?two?"?+??

??????????????????????"characters.\nAs?the?diagram?below?shows,?a?location?"?+??

??????????????????????"in?a?text?document?can?be?referred?to?as?a?position,?"?+??

??????????????????????"or?an?offset.?This?position?is?zero-based.";??

???

????????SimpleAttributeSet?aSet?=?new?SimpleAttributeSet();???

????????StyleConstants.setForeground(aSet,?Color.blue);??

????????StyleConstants.setBackground(aSet,?Color.orange);??

????????StyleConstants.setFontFamily(aSet,?"lucida?bright?italic");??

????????StyleConstants.setFontSize(aSet,?18);??

???

????????SimpleAttributeSet?bSet?=?new?SimpleAttributeSet();??

????????StyleConstants.setAlignment(bSet,?StyleConstants.ALIGN_CENTER);??

????????StyleConstants.setUnderline(bSet,?true);??

????????StyleConstants.setFontFamily(bSet,?"lucida?typewriter?bold");??

????????StyleConstants.setFontSize(bSet,?24);??

???

????????JTextPane?textPane?=?new?JTextPane();??

????????textPane.setText(text);??

????????StyledDocument?doc?=?textPane.getStyledDocument();??

????????doc.setCharacterAttributes(105,?doc.getLength()-105,?aSet,?false);??

????????doc.setParagraphAttributes(0,?104,?bSet,?false);??

???

????????JFrame?f?=?new?JFrame();??

????????f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);??

????????f.add(new?JScrollPane(textPane));??

????????f.setSize(400,400);??

????????f.setLocation(200,200);??

????????f.setVisible(true);??

????}??

???

????public?static?void?main(String[]?args)??

????{??

????????new?Styling();??

????}??

}??