JFormattedTextFieldとは

広告

JFormattedTextFieldは入力された数字をコンマ区切りにしたり、また郵便番号など特定のフォーマットに沿って入力を行わせたい場合などに使われます。

まず下記のクラス図を見てください。

java.lang.Object
  java.awt.Component
    java.awt.Container
      javax.swing.JComponent
        javax.swing.text.JTextComponent
          javax.swing.JTextField
            javax.swing.JFormattedTextField

public class JFormattedTextField
extends JTextField

JFormattedTextFieldはJTextFieldのサブクラスです。その為、基本的な部分はJTextFieldと同じです。

まずはどんな使い方になるのか下記のサンプルを見て下さい。

import javax.swing.*;
import java.awt.event.*;
import java.awt.FlowLayout;

import javax.swing.text.MaskFormatter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.text.DecimalFormat;
import java.util.Date;

public class SwingTest extends JFrame{
    public static void main(String[] args){
        SwingTest test = new SwingTest("SwingTest");

        test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        test.setVisible(true);
    }

    SwingTest(String title){
        setTitle(title);
        setBounds( 10, 10, 300, 200);

        DecimalFormat df = new DecimalFormat("#,###");
        JFormattedTextField ftf1 = new JFormattedTextField(df);
        ftf1.setColumns(10);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日(E)");
        JFormattedTextField ftf2 = new JFormattedTextField(sdf);
        ftf2.setValue(new Date());

        MaskFormatter mf = null;
        try{
            mf = new MaskFormatter("〒###-####");
            mf.setPlaceholderCharacter('_');
        }catch(ParseException pe){
        }
        JFormattedTextField ftf3 = new JFormattedTextField(mf);
        ftf3.setColumns(10);

        JPanel p = new JPanel();
        p.setLayout(new BoxLayout(p, BoxLayout.PAGE_AXIS));
        p.add(ftf1);
        p.add(ftf2);
        p.add(ftf3);

        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(p);
    }
}

実行結果は下記のようになります。

3つの使い方を試しています。1番目は数字に関するフォーマットを指定しています。数字を何か入力してみて下さい。

入力後、次の項目へ移動させると、入力された数字が指定したフォーマットの形に書き換えられます。

2番目は日付に関するフォーマットを指定しています。ここでは初期値として本日の日付を入れており、それを指定したフォーマットで書き出しています。

3番目は指定した形式での入力を促す場合です。ここでは郵便番号を想定し、3桁と4桁の組み合わせを使っています。入力して欲しい部分には"_"を使って分かりやすいように表示しています。文字の入力は決められた場所にしか入りません。

このような使い方になります。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。