Swingの文字表示

  1. Swingの文字表示部品
     Swingには1行を表示するjTextFielf、複数行を表示するjTextArea、段落のスタイルや、htmlやrtfをサポートするjEditorPaneがあります。

  2. 文字関連部品
    1. 概要
       jtextFieldは1行の文字を記録・表示します。jTextAreaは複数行の記録、表示が可能ですが、段落毎のスタイルの設定はできません。どちらも、文字全体の フォントやサイズは設定可能です・
       jEditorPaneでは段落毎のスタイルの設定、htmlの表示やhtmlのリンクタグによるイベント処理にも対応します。

        
            http://java.sun.com/j2se/1.3/ja/docs/ja/api/index.htmlより

       jTextArea、jEditorPaneはでスクロールを行うには、コンテナ部品である、JScrollPaneに組み込む必要があります。

    2. スクロール機能の組み込み
       JBuilderでjTextAreaの部品にスクロール機能を付加するには、SwingComponentのjScrollPaneを組み込み、その内部に、jTextAreaを作成します。内部で作成されたjTextAreaは自動的に、jScrollPaneの部品サイズに調整されます。また、jScrollPaneの内部に、作成済みのjTextAreaをドラッグして組み込むこともできます。
       プログラムでは、この操作により、スクロールパネルへ 
       getViewport().add(jTextArea1, null)
      が実行されます。
          jTextField1.setBounds(new Rectangle(63, 44, 244, 23));
          jScrollPane1.setBounds(new Rectangle(40, 114, 156, 120));
          jScrollPane1.getViewport().add(jTextArea1, null);

    3. html表示
       jLabelクラスでは、htmlのタブ表現を表示できます。また、jEditorPanel では、次のように設定します。
          String st="<html><body><h2>hello</h2>H<sub>2</sub>O</body></html>";
        jEditorPane1.setEditable(false);
          jEditorPane1.setContentType("text/html");
          jEditorPane1.setText(st);
      あるいは、htmlのファイル(forst.html)を setPage でそのまま表示できます。
          try{
            jEditorPane1.setPage(getCodeBase()+"first.html");
            } catch (Exception err)
                {System.out.println("error setpage:"+err.toString());
            }
    4. html リンク イベント
       EditorPane()で、タブ表現 <a href=".."> のリンクを行うと、リンク先がクリック可能になります。クリックを行うと、hyperlinkUpdate が実行されます。 e.getURL().toString() は href のリンク先の文字列を返します。jEditorPane1.setPage(url) で、リンク先のページを表示します。
        public void hyperlinkUpdate(HyperlinkEvent e) {
          if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED) return;
          String url = e.getURL().toString();
          //jEditorPane1.setText(url);
          try { jEditorPane1.setPage(url); } catch(Exception err) {}
        }
      hyperlinkUpdate は インターフェース HyperlinkListener のメソッドで、
       class Applet1 extends Applet implements HyperlinkListener
      先頭行には、上のような implements が必要です。また、
       import javax.swing.event.*;
      も必要です。

  3. プロジェクト
    1. 部品の組み込み
      上段に、jTextFieldを3行程度の高さで設定します。その下に左に jTextArea 右に jEditorPanel を配置します。jTextArea には、swingContainer の scrollPane を組み込みます。
    2. プログラム
       HyperlinkListener を組み込み、htmlのリンク機能を実現します。

      import javax.swing.event.*;
      public class Applet1 extends Applet implements HyperlinkListener { }
      で、インターフェースを組み込みます。 init()で
       jEditorPane1.addHyperlinkListener(this);
      により、HyperLinkリスナを組み込みます。これで、リンク部をクリックすると先に紹介した 
       public void hyperlinkUpdate(HyperlinkEvent e) 
      が実行されます・


  4. 実行
    jTextField1(左上)は複数行の表示は可能ですが、複数行の入力はできません。jjTextArea は複数行の表示・編集が可能です。文字が行内の文字数、最大の行数を超えると、スクロールバーが現れます。
     右の jedtorPanel は first.html を表示しています。ref のリンクをクリックすると、next.html にリンクします。ここで、firstPage をクリックすると、元のページに戻ります。