2012-03-05 8 views
2

私はファイルを1行ずつ読み込みます。 splitメソッドを使用して各行を単語に分割し、その位置(各行の最初の4文字など)に基づいて単語を色付けします。以下のような異なる単語に異なる色を適用する必要があります。私はどのクラスが有用かを知りたい、私は蛍光灯を調べた。例の任意の提案は、HTMLEditorKit追加着色タグと色をつけるテキストをJavaで

String text = textArea.getText(); 
String newLine = "\n"; 
String spaceDelim = "[ ]+"; 
String[] tokens; 
String lines = text.split(newLine); 
for(String line : lines) { 
    tokens = line.split(spaceDelim); 
    tokens[1] //should be in redColor 
    tokens[2] //should be in greenColor 
    tokens[3] tokens[4] //should in blueColor 
} 

答えて

6

を使用してテキストの色を指定することができます。これはあなたを助けるでしょう。

サンプルプログラム:

import java.awt.*; 

import java.awt.event.*; 

import javax.swing.*; 

import javax.swing.border.*; 

import javax.swing.text.AttributeSet; 
import javax.swing.text.SimpleAttributeSet; 
import javax.swing.text.StyleConstants; 
import javax.swing.text.StyleContext; 

public class TextPaneTest extends JFrame 
{ 
    private JPanel topPanel; 
    private JTextPane tPane; 

    public TextPaneTest() 
    { 
     topPanel = new JPanel();   

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLocationRelativeTo(null);    

     EmptyBorder eb = new EmptyBorder(new Insets(10, 10, 10, 10)); 

     tPane = new JTextPane();     
     tPane.setBorder(eb); 
     //tPane.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY)); 
     tPane.setMargin(new Insets(5, 5, 5, 5)); 

     topPanel.add(tPane); 

     appendToPane(tPane, "My Name is Too Good.\n", Color.RED); 
     appendToPane(tPane, "I wish I could be ONE of THE BEST on ", Color.BLUE); 
     appendToPane(tPane, "Stack", Color.DARK_GRAY); 
     appendToPane(tPane, "Over", Color.MAGENTA); 
     appendToPane(tPane, "flow", Color.ORANGE); 

     getContentPane().add(topPanel); 

     pack(); 
     setVisible(true); 
    } 

    private void appendToPane(JTextPane tp, String msg, Color c) 
    { 
     StyleContext sc = StyleContext.getDefaultStyleContext(); 
     AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c); 

     aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console"); 
     aset = sc.addAttribute(aset, StyleConstants.Alignment, StyleConstants.ALIGN_JUSTIFIED); 

     int len = tp.getDocument().getLength(); 
     tp.setCaretPosition(len); 
     tp.setCharacterAttributes(aset, false); 
     tp.replaceSelection(msg); 
    } 

    public static void main(String... args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
      { 
       public void run() 
       { 
        new TextPaneTest(); 
       } 
      }); 
    } 
} 

そして、ここでは、このコードの出力です:

JTEXTPANE EXAMPLE

+0

おかげで、それは私が探しています何。私は試して戻ってきます。 – FirmView

+1

@FirmView:あなたのご歓迎であり、私のゲストになることができたこと、これまでにお手伝いできること:-) –

+2

* "サンプルプログラムスニペット:" *これらの単語に「スニペット」を追加するのは奇妙です。つまり、「スニペット」は一般的に「短い」と言いますが、プログラミングの文脈では、(少なくとも私にとっては)「コードなしで作業するには短すぎます」ということを意味します。そのサンプルプログラムはそのまま準備ができています。 (コード&スクリーンショットの場合は+1、BTWの場合は+1) –

5

使用JTextPane非常に参考になります。

それとも、あなたは異なる色を持つように異なるテキスト・リテラルを持つようにしたい場合は、あなたがおよそHow to use Editor Pane or TextPaneを読まなければならないStyledEditorKitJEditorPane/JTextPaneを使用してStyleConstants.setForeground()

関連する問題