トップ->Java Applet入門

Java入門内検索

目次
Javaトップ
0. はじめに

1. Javaの基礎
   1. コンパイル方法・実行方法
   2. 予約語
   3. 構成
   4. データの型と宣言
   5. 定数と変数
   6. 簡単な演算
   7. ディスプレイへの表示
   8. 文字列

2. 制御文
   1. 順次構造
   2. 単一分岐
   3. 多重分岐
   4. ケース構造
   5. 反復構造(while)
   6. 反復構造(do)
   7. 反復構造(for)
   8. 補助制御文
   9. 練習問題
   10.練習問題
   11.多重ループの抜け方

3. 配列
   1. 配列とは
   2. 配列の宣言と初期化
   3. 配列の使用法
   4. 練習問題
   5. 2次配列と多次元配列
   6. 練習問題

4. クラスの基礎
   1. クラスとは
   2. クラスの作成
   3. コンストラクタ
   4. 例題
   5. 演算子==とequalsメソッド

5. 演算子
   1. 演算子の種類
   2. インクリメント演算子とデクリメント演算子
   3. 複合代入演算子
   4. ビット演算子
   5. シフト演算子
   6. キャスト演算子
   7. 順次演算子
   8. 条件演算子(三項演算子)
   9. instanceof演算子
   10.演算子の優先順位
   11.式と値
   12.条件式と値
   13.練習問題

6. オブジェクト指向とは
   1. オブジェクト指向とクラス
   2. 継承
   3. カプセル化
   4. ポリモーフィズム

7. クラス
   1. thisキーワード
   2. public, protected, private
   3. 静的変数・静的メソッド・静的ブロック
   4. ローカル変数
   5. メソッドの引数
   6. null
   7. 練習問題
   8. インナークラス(内部クラス)
   9. 無名インナークラス(無名内部クラス)
   10. クラスの包含
   11. 練習問題

8. 継承
   1. 継承とは
   2. スーパークラスのコンストラクタ
   3. 継承とキャスト
   4. スコープ
   5. クラスの作成
   6. abstract
   7. 例題)お絵かきソフト
   8. 継承と包含

9. インターフェース
   1. インターフェースとは
   2. インターフェースの宣言
   3. インターフェースの参照
   4. インターフェースの修飾子
   5. インターフェースの継承
   6. インターフェースとinstanceof演算子

10. パッケージ
   1. パッケージとは
   2. パッケージの宣言
   3. クラスパス
   4. import

11. 例外
   1. 例外とは
   2. 例外が起きたら
   3. 例外の種類
   4. catchブロックの検索
   5. throw
   6. throws
   7. エラーと例外
   8. 独自の例外

12. マルチスレッド
   1. スレッドとは
   2. スレッドのライフサイクル
   3. スレッドの作成(Threadクラス)
   4. Threadクラスのメソッド
   5. スレッドの作成(Runnableインターフェース)
   6. 同期
   7. デッドロック
   8. スレッド間の通信

13. ガーベージコレクター
   1. ガーベージコレクターとは
   2. ガーベージコレクターの実行
   3. finalize

14. 有用な(?)クラス群
   1. Math
   2. Random
   3. System
   4. Vector
   5. Stack
   6. Hashtable
   7. Enumeration
   8. String
   9. StringTokenizer
   10. Object
   11. Number
   12. Byte
   13. Short
   14. Integer
   15. Long
   16. Float
   17. Double
   18. BigInteger
   19. BigDecimal
   20. Character
   21. Date
   22. Calendar

15. 入出力
   1. ファイルとディレクトリ
   2. ストリームの種類
   3. 文字ストリーム
   4. Reader
   5. CharArrayReader
   6. StringReader
   7. InputStreamReader
   8. FileReader
   9. BufferedReader
   10. Writer
   11. CharArrayWriter
   12. StringWriter
   13. OutputStreamWriter
   14. FileWriter
   15. PrintWriter
   16. BufferedWriter
   17. バイトストリーム
   18. InputStream
   19. ByteArrayInputStream
   20. FileInputStream
   21. FilterInputStream
   22. BufferedInputStream
   23. DataInputStream
   24. OutputStream
   25. ByteArrayOutputStream
   26. FileOutputStream
   27. FilterOutputStream
   28. BufferedOutputStream
   29. PrintStream
   30. DataOutputStream
   31. ランダムアクセスファイル
   32. スレッド間通信
       PipedInputStream
       PipedOutputStream
   33. クラスの保存
       ObjectInputStream
       ObjectOutputStream
       Serializable
   34. StreamTokenizer
   35. 標準入出力
       キーボードからの入力(標準入力)
       標準出力
       標準エラー出力
   36. 練習問題

16. ネットワーク
   1. インターネットアドレス
   2. TCP/IP通信
   3. UDP通信
   4. URL
   5. 練習問題
   6. マルチキャスト
   7. RMI

17. 中間試験
   1. 問題:Webサーバーを作りなさい
   2. HTTPプロトコル
   3. クラス設計
   4. 解答例

18. AWT
   1. AWTとは
   2. Component
   3. Container
   4. Frame
   5. Button
   6. レイアウト
   7. BorderLayout
   8. FlowLayout
   9. GridLayout
   10. CardLayout
   11. nullレイアウト
   12. イベントとイベントリスナー
   13. ActionListener
   14. Panel
   15. Label
   16. CheckBoxとItemListener
   17. CheckBoxGroup
   18. Choice
   19. List
   20. TextFieldとTextListener
   21. TextArea
   22. ScrollbarとAdjastmentListener
   23. Canvas
   24. 練習問題(計算機)
   25. Point
   26. Dimension
   27. Color
   28. Font
   29. Graphics
   30. 練習問題
   31. 練習問題
   32. ダブルバッファ
   33. イベント その2
       ActionEvent
       ItemEvent
       AdjustmentEvent
   34. KeyListenerとKeyEvent
       InputEvent
   35. MouseListenerとMouseEvent
   36. MouseMotionListener
   37. FocusListenerとFosusEvent
   38. WindowListenerとWindowEvent
   39. ComponentListenerとComponentEvent
   40. ContainerListenerとContainerEvent
   41. アダプタクラスとインナークラス
   42. 無名インナークラス
   43. 練習問題 お絵かき
   44. WindowとDialog、FileDialog
   45. メニュー
   46. ポップアップメニュー
   47. ショートカット
   48. カーソル

19. Java Applet
   1. Java Appletとは
   2. 最初のJava Applet
   3. Appletクラス
   4. Appletクラスのライフサイクル
   5. AppletContext
   6. イメージ
   7. パラメーター
   8. 練習問題 スライドショー
   9. Jarファイル
   10. 練習問題 時計

20. その他のチップス
   1. Javaから別のプログラムを実行させる
   2. StringBuffer
   3. 環境変数の取得
   4. 基数表記
   5. インスタンスのコピー
   6. 値渡しと参照渡し
   7. クラスオブジェクトの比較

21. 修了試験 ↓これより下は工事中です。
   1. 考え中
   2. 考え中
   3.
   4.

22. そしてその後は・・・
   1. ヒューマンアカデミー Javaプログラマー本科
   2. Appli-Style.com iアプリ作成に挑戦
   3. SJC-A 受験チケット申込


・ このページの先頭に戻る
・ トップページに戻る



・ このページの先頭に戻る
・ トップページに戻る

トップ-> Java入門:18章 AWT-> 20.TextFieldとTextListener

←前ページへ :  トップへ :  次ページへ→

20. TextFieldとTextListener

  テキストフィールドは1行の文字列を表示・編集するGUIコンポーネントです。キーが押されるたびにKeyEventが、テキストが編集されるたびにTextEventが発生します。また、リターンキーが押されるとActionEventが発生します。

血液型を入力してください:

【使い方】
  • TextFieldのインスタンスを作成します。
  • このインスタンスを配置するFrameなどContainerに追加(addメソッド)する。
  • 必要によってActionListener(addItemListenerメソッド)、KeyListener(addKeyListenerメソッド)、TextListener(addTextListenerメソッド)を追加します。
  • 上記リスナーを登録した場合は、必要なメソッドを実装します。

コンストラクタ
TextField()
      空のテキストフィールドを作ります。
TextField(int columns)
      表示桁数をcolumnsでテキストフィールドを作成します。
      表示桁数はプラットフォームによって左右されるため誤差が生じることがあります。
      columnsが負数の場合は0になります。
TextField(String text)
      デフォルトのテキストをtextとしてテキストフィールドを作成します。
TextField(String text, int columns)
      デフォルトのテキストをtextの、表示桁数columns桁のテキストフィールドを作成します。
      表示桁数はプラットフォームによって左右されるため誤差が生じることがあります。
      columnsが負数の場合は0になります。


  TextFieldクラスはTextComponentクラスのサブクラスになります。そこでまず、TextComponentのメソッドを紹介します。
TextComponent
メソッド
void addTextListener(TextListener l)
    TextListenerを登録します。
void removeTextListener(TextListener l)
    TextListenerを削除します。
void setEditable(boolean enable)
    enableがfalseならばこのテキストコンポーネントを編集不可にします。
    trueならば編集可能にします。
boolean isEditable()
    編集可能かを返します。trueならば編集可能です。
String getText()
    このテキストコンポーネント内の文字列を返します。
void setText(String text)
    このテキストコンポーネント内の文字列をtextに書き換えます。
String getSelectedText()
    このテキストコンポーネント内で選択されている文字列を返します。
int getSelectionStart()
    このテキストコンポーネントの選択テキストの始点を返します。
    選択されていない場合は現在のカーソル位置を返し、getSelectionEnd()と同じ値になります。
int getSelectionEnd()
    このテキストコンポーネントの選択テキストの終点を返します。
    選択されていない場合は現在のカーソル位置を返し、getSelectionStart()と同じ値になります。
void setSelectionStart(int i)
    このテキストコンポーネントの選択範囲の始点を、iで指定された位置に設定します。
    (1)現在選択されていない場合でiよりもカーソルが前にある場合は何も選択されませんが、カーソルがiに移ります。
    (2)現在選択されていない場合でiよりもカーソルが後ろにある場合はiから現在のカーソルまでが選択されます。
    (3)現在文字列が選択されている場合で、その選択範囲がiよりも前の場合は、(1)と同じ動作をします。選択は解除されます。
    (4)現在文字列が選択されている場合で、その選択範囲がiよりも後ろの場合は、選択範囲の初めをiとします。
    (5)iが文字数よりも大きい場合は文字数の範囲の最後になります。
    (6)iが負数の場合は0として処理されます。
void setSelectionEnd(int i)
    このテキストコンポーネントの選択範囲の終点を、iで指定された位置に設定します。
    (1)現在選択されていない場合でiよりもカーソルが前にある場合はカーソル位置からiまでが選択され、カーソルはiに移ります。
    (2)現在選択されていない場合でiよりもカーソルが後にある場合は何も処理されません。
    (3)現在文字列が選択されている場合で、その選択範囲がiよりも後の場合は、選択範囲の最初の文字にカーソルが移動し、選択は解除されます。
    (4)現在文字列が選択されている場合で、その選択範囲がiよりも前の場合は、選択範囲の最後をiとします。
    (5)iが文字数よりも大きい場合はカーソル位置からiまで選択されます。
    (6)iが負数の場合で文字列が選択されている場合、選択範囲の最初の文字にカーソルが移動し、選択は解除されます。
    (7)iが負数の場合で文字列が選択されていない場合、何も処理されません。
void select(int start, int end)
    このテキストコンポーネントの選択範囲の終点を、 startからendで指定された位置に設定します。
    endの文字は選択されないため、(1,3)とした場合2文字が選択されます。
    引数が負数の場合は0として処理されます。引数が文字の長さを超えた場合は文字の長さの最後に自動的に調整されます。
    startよりもendの方が小さい場合は選択されません。
    startendの大きい方にカーソルが移動します。


  以下にTextFieldのメソッドを紹介します。
TextField
メソッド
void addActionListener(ActionListener al)
    リターンキーが押された時に呼ばれるActionListenerを追加します。
void removeActionListener()
    ActionListenerを削除します。
int getColumns()
    このテキストフィールドの桁数を返します。
void setColumns(int col)
    このテキストフィールドの桁数をcolに設定します。
char getEchoChar(int col)
    パスワード入力の時に「*****」と表示されますが、このように内容を表示せず伏せ字にする場合があります。
    この伏せ字のことをエコーキャラクターと言い、それを返します。
void setEchoChar(char echo)
    パスワード入力の時に「*****」と表示されますが、このように内容を表示せず伏せ字にする場合があります。
    この伏せ字のことをエコーキャラクターと言い、それをechoに設定します。


  また、TextListenerインターフェースをインプリメントするためには以下のメソッドを実装します。
メソッド
void textValueChanged(TextEvent e)
    テキストの値が変更されると呼び出されます。

  以下、例を示します。2つのテキストフィールドを準備し、登録ボタンを押すと2つの内容を確認します。TextListenerは使用していません。


import java.awt.*;
import java.awt.event.*;

public class Test18_20{
    TextField    text1;        /* メールアドレス入力欄(上)*/
    TextField    text2;        /* メールアドレス入力欄(下)*/
    Button      btnOK;         /* 登録ボタン */
    Button      btnCancel;     /* やり直しボタン */
    Label       lblMsg;        /* メッセージ表示欄 */

    public Test18_20(){
        Label  label1;
        Label  label2;
        Panel  panel1;
        Panel  panel2;
        Panel  panel3;

        /* フレームを作成します。*/
        Container frm = new Frame();
        frm.setSize(new Dimension(450,150));

        /* パネルを作成します。*/
        panel1 = new Panel();
        panel2 = new Panel();
        panel3 = new Panel();

        /* レイアウトを設定します。*/
        frm   .setLayout(new GridLayout(4,1));
        panel1.setLayout(new FlowLayout());
        panel2.setLayout(new FlowLayout());
        panel3.setLayout(new FlowLayout(FlowLayout.CENTER));

        /* コンポーネントを作ります。*/
        lblMsg = new Label();
        text1  = new TextField(25);
        text2  = new TextField(25);
        btnOK  = new Button("登録");
        btnCancel = new Button("やり直し");

        /* パネルに登録 */
        panel1.add(new Label("メールアドレスを入力してください。"));
        panel1.add(text1);
        panel2.add(new Label("確認のためにもう1度お願いします。"));
        panel2.add(text2);
        panel3.add(btnOK);
        panel3.add(btnCancel);

        /* リスナーを登録します。*/
        btnOK    .addActionListener(new ButtonOKAction());
        btnCancel.addActionListener(new ButtonCancelAction());
        text1    .addActionListener(new Text1Action());
        text2    .addActionListener(new ButtonOKAction());
/*      text1    .addTextListener(new MyTextListener());*/
/*      text2    .addTextListener(new MyTextListener());*/

        /* フレームに登録します。*/
        frm.add(panel1);
        frm.add(panel2);
        frm.add(panel3);
        frm.add(lblMsg);

        /* フレームを表示させます。*/
        frm.setVisible(true);
    }

    /* 選択状態が変更されるとここが呼ばれます。*/
    /* 今回何も処理しません 
    class MyTextListener implements TextListener{
        public void textValueChanged(TextEvent e){
        }
    }*/

    /* OKボタンが押された場合 */
    class ButtonOKAction implements ActionListener{
        public void actionPerformed(ActionEvent e){
            /* メールアドレスが正しいかを判断(@マークがあるか、.があるかを簡単に判断してます)し、*/
            /* 2つのアドレスが同じものならば登録完了のメッセージを表示させる。*/
            String str1 = text1.getText().trim();
            String str2 = text2.getText().trim();
            String strMsg;
            if( !(str1.indexOf('@') > 1 && str2.indexOf('@') > 1 ) )
                strMsg = "メールアドレスが不正です";
            else if( !(str1.indexOf('.') > 1  && str2.indexOf('.') > 1 ) )
                strMsg = "メールアドレスが不正です";
            else if( !(str1.length() > 4 && str1.length() > 4) )
                strMsg = "メールアドレスが不正です";
            else if( str1.equals(str2) ){
                strMsg = "[" + str1 + "]の登録を受け付けました";
                text1.setText("");
                text2.setText("");
            }else
                strMsg = "メールアドレスが違います" ;
            lblMsg.setText(strMsg);
        }
    }

    /* Cancelボタンが押された場合はすべて消去する */
    class ButtonCancelAction implements ActionListener{
        public void actionPerformed(ActionEvent e){
            lblMsg.setText("");
            text1.setText("");
            text2.setText("");
        }
    }

    /* text1でリターンキーが押されたら次にフォーカスを与える */
    class Text1Action implements ActionListener{
        public void actionPerformed(ActionEvent e){
            text1.transferFocus();
        }
    }

    public static void main(String args[]){
        new Test18_20();
    }
}
JavaAppletが有効だとここに上記のプログラム実施例が表示されます
上記で実施しているサンプル(JavaApplet)は、メールアドレスを入力するようになっていますが、入力されたメールアドレスをネット上そのほかどこにも送信する機能などは含まれていません。上記のサンプルコードをJavaAppletにしただけです。気になる方は架空のメールアドレスを入力してみてください。なお、[@]と[.]が含まれていない文字列はメールアドレスと認識されませんのでご注意ください。


←
前ページへ :  トップへ :  次ページへ→