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 )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。