JTextAreaはどのように1行のフォントの色を変えますか?
2504 ワード
JTextArea自体はこのような機能を備えていません。テキストは純粋なコンポーネントです。JTextPaneを使って、Dockment文書を操作してJTextPaneの表示内容をコントロールします。下のコードはJTextPaneにアイコンを表示しました。3行の文字は各行に異なる色と大きさで表示されます。
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 ="
" + 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();
}
}
回転:http://zhidao.baidu.com/question/42650312