保留字体大小与颜色
JTextArea是纯文本组件,可以使用JTextPane,通过操作Document文档来控制JTextPane显示的内容,下面的代码在一个JTextPane中显示了一个图标,三行文字,每行用不同的颜色和大小显示:
import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.text.*; import java.io.*; public class Test { JFrame frame; JTextPane textPane; File file; Icon image; public Test(){ frame = new JFrame("JTextPane"); textPane = new JTextPane(); file = new File("./classes/test/icon.gif"); image = new ImageIcon(file.getAbsoluteFile().toString()); } public void insert(String str, AttributeSet attrSet) { Document doc = textPane.getDocument(); str ="\n" + str ; try { doc.insertString(doc.getLength(), str, attrSet); } catch (BadLocationException e) { System.out.println("BadLocationException: " + e); } } public void setDocs(String str,Color col,boolean bold,int fontSize) { SimpleAttributeSet attrSet = new SimpleAttributeSet(); StyleConstants.setForeground(attrSet, col); //颜色 if(bold==true){ StyleConstants.setBold(attrSet, true); }//字体类型 StyleConstants.setFontSize(attrSet, fontSize); //字体大小 insert(str, attrSet); } public void gui() { textPane.insertIcon(image); setDocs("第一行的文字",Color.red,false,20); setDocs("第二行的文字",Color.BLACK,true,25); setDocs("第三行的文字",Color.BLUE,false,20); frame.getContentPane().add(textPane, BorderLayout.CENTER); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); }}); frame.setSize(200,300); frame.setVisible(true); } public static void main(String[] args) { Test test = new Test(); test.gui(); } }