- ベストアンサー
TextAreaでの文字の色
こんばんわ。 皆様、ゴールデンウィークいかがお過ごしでしょうか? さて、TextAreaもしくはJTextAreaで、一行づつ、文字の色を変えるにはどうしたらいいのでしょうか? 以前も、同じ内容の質問があったようですが、(http://oshiete1.goo.ne.jp/kotaeru.php3?q=22309) 読んでみたのですがStylepadというDEMOがどこにあるかわからず、解決できないのでよろしくお願いします。 解決できそうなサンプルのURLなど分かりましたら、回答していただければとてもたすかります。 import java.applet.*; import java.awt.*; import java.swing.*; public class test extends JApplet { public void init() { Container con = getContentPane(); String str1 = "あいうえお\n"; String str2 = "かきくけこ\n"; JTextArea JT = new JTextArea(); con.add(JT); JT.append(str1); JT.append(str2); } } これの"あいうえお"と"かきくけこ"を異なる色にしたいのですが、どうしたらいいのでしょう?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 JTextAreaはプレーンテキストを扱うコンポーネントなので、こういう場合はJEditorPaneかJTextPaneを使います。 JEditorPaneはHTMLを扱うときに使うようなので、JTextPaneを使うのが適当のような気がします。 サンプルを書くとこんな感じでしょうか。 import javax.swing.*; import javax.swing.text.*; import java.awt.*; public class Test extends JFrame { JTextPane textPane; DefaultStyledDocument document; public static void main(String[] args) { Test frame = new Test(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 300); frame.setVisible(true); } public Test() { document = new DefaultStyledDocument(); textPane = new JTextPane(document); try { //属性情報を作成 SimpleAttributeSet attribute = new SimpleAttributeSet(); //属性情報の文字色に赤を設定 attribute.addAttribute(StyleConstants.Foreground, Color.RED); //ドキュメントにその属性情報つきの文字列を挿入 document.insertString(0, "あいうえお\n", attribute); //属性情報の文字色に青を設定 attribute.addAttribute(StyleConstants.Foreground, Color.BLUE); //ドキュメントにその属性情報つきの文字列を挿入 document.insertString(document.getLength(), "かきくけこ\n", attribute); } catch (BadLocationException ex) { ex.printStackTrace(); } add(textPane, BorderLayout.CENTER); } } なんか、いろいろややこしいのですが、参考URLのサイトがわかりやすかったので、ご覧ください。
その他の回答 (1)
- Bonjin
- ベストアンサー率43% (418/971)
URLを見て頂くとわかりますが、JTextAreaでは全て同じフォントで表示されると書いてあります。 スタイル付きテキストを利用するにはJEditPaneやJTextPaneを利用する必要があります。 String str1 = "<font color=\"blue\">あいうえお</font>"; String str2 = "<font color=\"red\">かきくけこ</font>"; JTextPane JT = new JTextPane(); JT.setContentType("text/html"); JT.setText(str1 + "<br>" + str2); con.add(JT);
お礼
回答ありがとうございます。 早速ためしてみると見事にできました。 ありがとうございます。 使い慣れたhtmlで文字の色やサイズまで簡単に変更できるのでとても扱いやすいです。
お礼
回答ありがとうございます。 こちらも早速試してみました。 見事に文字の色が行ごとに変えることができました。 ありがとうございます。 No1の方の例とどちらを使用しようかと考えたのですが、 HTMLの方が使いなれているんですが、insertStringが使いがってが良さそうなので、こちらを使用することにいたします。 とても参考になりました。おふたりとも良い例と良い参考URLを示してくださいましてありがとうございました。