モジュール java.desktop
パッケージ javax.swing

クラスJTextField

java.lang.Object
すべての実装されたインタフェース:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable, SwingConstants
直系の既知のサブクラス:
DefaultTreeCellEditor.DefaultTextField, JFormattedTextField, JPasswordField

@JavaBean(defaultProperty="UIClassID", description="A component which allows for the editing of a single line of text.") public class JTextField extends JTextComponent implements SwingConstants
JTextFieldは、1行のテキストの編集を可能にする軽量コンポーネントです。 テキスト・フィールドの詳細と使用例については、『The Java Tutorial』の「How to Use Text Fields」を参照してください。

JTextFieldは、この処理を適切に行うjava.awt.TextFieldクラスとのソース互換性を提供するために用意されています。 このコンポーネントは、java.awt.TextFieldクラスにはない機能を備えています。 追加機能については、スーパー・クラスを参照してください。

JTextFieldには、発生するアクション・イベントのコマンド文字列として使用する文字列を確定するメソッドがあります。 java.awt.TextFieldでは、フィールドのテキストがActionEventのコマンド文字列として使用されました。 JTextFieldでは、setActionCommandメソッドで設定されたコマンド文字列がnullでない場合は、それが使用されます。それ以外の場合は、フィールドのテキストがjava.awt.TextFieldとの互換機能として使用されます。

プラグイン可能なルック・アンド・フィールの新しい実装がパスワード文字列を偶発的に表示してしまわないようにするために、setEchoCharメソッドとgetEchoCharメソッドは直接は提供されません。 パスワード様式のサービスを提供するためには、これとは別のJPasswordFieldクラスがJTextFieldを拡張して導入され、独自にプラグイン可能なルック・アンド・フィールにこのサービスを提供します。

java.awt.TextFieldの変更を監視するには、TextEventTextListenerを追加します。 JTextComponentベースのコンポーネントでは、DocumentEvent経由でモデルからDocumentListenersに変更が送られます。 DocumentEventは、必要に応じて、変更位置と変更の種類を提供します。 この部分のコードは次のようになります。


     DocumentListener myListener = ??;
     JTextField myArea = ??;
     myArea.getDocument().addDocumentListener(myListener);
 

JTextFieldの水平配置は、左揃え、中央揃え、右揃え、または末尾調整に設定できます。 フィールド・テキストの必要なサイズがそのフィールドに割り当てられたサイズよりも小さい場合は、右揃えと末尾調整は便利です。 これはsetHorizontalAlignmentメソッドとgetHorizontalAlignmentメソッドによって指定されます。 デフォルトでは、左揃えになります。

テキスト・フィールドがVK_ENTERイベントを消費する方法は、このテキスト・フィールドにアクション・リスナーがあるかどうかによって異なります。 アクション・リスナーがある場合は、VK_ENTERによりリスナーにActionEventが返され、VK_ENTERイベントが消費されます。 これは、AWTテキスト・フィールドがVK_ENTERイベントを処理する方法と互換性があります。 テキスト・フィールドにアクション・リスナーがない場合、v 1.3では、VK_ENTERイベントは消費されません。 代わりに、上位クラスのコンポーネントのバインディングが処理されて、JFC/Swingのデフォルト・ボタン機能が使用できます。

カスタマイズされたフィールドを簡単に作成するには、モデルを拡張して、提供されるデフォルト・モデルを変更します。 たとえば次のコードの一部は、大文字だけを保持するフィールドを作成します。 これは、テキストがクリップボードからペーストされたり、プログラムに基づいて変更されても機能します。



 public class UpperCaseField extends JTextField {
 
     public UpperCaseField(int cols) {
         super(cols);
     }
 
     protected Document createDefaultModel() {
         return new UpperCaseDocument();
     }
 
     static class UpperCaseDocument extends PlainDocument {
 
         public void insertString(int offs, String str, AttributeSet a)
             throws BadLocationException {
 
             if (str == null) {
                 return;
             }
             char[] upper = str.toCharArray();
             for (int i = 0; i < upper.length; i++) {
                 upper[i] = Character.toUpperCase(upper[i]);
             }
             super.insertString(offs, new String(upper), a);
         }
     }
 }

 

警告: Swingはスレッドに対して安全ではありません。 詳細は、「Swing's Threading Policy」を参照してください。

警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4では、すべてのJavaBeansの長期ストレージのサポートがjava.beansパッケージに追加されました。 XMLEncoderを参照してください。

導入されたバージョン:
1.2
関連項目: