- Home ›
- Swing ›
- テキストフィールドの作成(JTextFieldクラス) ›
- HERE
入力された値の取得
テキストフィールドに入力された値を取得するには、JTextFieldクラスの親クラスであるJTextComponentで用意されているgetTextメソッドを使います。
getText public String getText()
この TextComponent に格納されたテキストを返します。基本となるドキュメントが null の場合は、 NullPointerException を返します。 テキストはバウンドプロパティーではないため、それが変更さ れても PropertyChangeEvent はトリガーされません。テキストの変更を待機するには、 DocumentListener を使用してください。 戻り値: テキスト パラメータ: position - 位置 例外: NullPointerException - ドキュメントが null の場合
メソッドを実行するとテキストフィールドに入力されているテキストを戻り値として返します。
実際の使い方は次のようになります。
JTextField text = new JTextField("初期値"); String str = text.getText();
指定した位置の値を取得する
テキストフィールドに入力された全ての値ではなく、指定した位置から指定しただけの文字を取得することもできます。先ほどと同名のメソッドですが引数が異なるgetTextメソッドを使います。
getText public String getText(int offs, int len) throws BadLocationException
コンポーネントが表すテキストの一部を取り出します。長さが 0 の場合は、空の文字列を返します。 パラメータ: offs - オフセット >= 0 len - 長さ >= 0 戻り値: テキスト 例外: BadLocationException - オフセットまたは長さが無効な場合
引数には取得する文字列の開始位置と取得する文字の長さを指定します。指定は文字数で指定し先頭は0から開始されます。戻り値としてテキストフィールドに入力された文字列の中で指定した位置から指定した長さだけのString型の値として取得できます。
このメソッドを使用する場合には例外として「javax.swing.text.BadLocationException」が発生する可能性がありますので、その処理を記述して下さい。
実際の使い方は次のようになります。
JTextField text = new JTextField("初期値"); try{ String str = text.getText(0, 2); }catch(BadLocationException e){ System.out.println("Bad Location Error!"); }
上記の場合、先頭から2文字分の値を取得します。
サンプルプログラム
では実際に試してみます。
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.JLabel; import java.awt.Container; import java.awt.BorderLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; class SSample9_1 extends JFrame implements ActionListener{ JTextField text1; JTextField text2; JLabel label; public static void main(String args[]){ SSample9_1 frame = new SSample9_1("タイトル"); frame.setVisible(true); } SSample9_1(String title){ setTitle(title); setBounds(100, 100, 300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); text1 = new JTextField("住所1", 20); text2 = new JTextField("住所2", 20); JButton button = new JButton("取得"); button.addActionListener(this); label = new JLabel(); p.add(text1); p.add(text2); p.add(button); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); contentPane.add(label, BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e){ label.setText(text1.getText() + text2.getText()); } }
ではコンパイルを行った上で実行してみます。
2つのテキストフィールドに値を入力し、その後で「取得」ボタンを押すとテキストフィールドに入力された値を取得して画面下のラベルに表示します。
( Written by Tatsuo Ikura )