Java中的JTextField和JFormattedTextField有什麼區別?


JTextField 可用於普通文字,而JFormattedTextField是一個可以擴充套件JTextField的類,它可以用於為其包含的文字設定任何格式,例如電話號碼、電子郵件、日期等。

JTextField

  • JTextField是最重要的元件之一,允許使用者以單行格式輸入文字值。
  • 當我們嘗試在文字欄位中輸入一些內容時,JTextField可以生成一個ActionListener介面,並且每次游標(即遊標)位置改變時,它可以生成一個CaretListener介面。
  • JTextField還可以生成MouseListenerKeyListener介面。

示例

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JTextFieldTest extends JFrame {
   JTextField jtf;
   public JTextFieldTest() {
      setTitle("JTextField Test");
      setLayout(new FlowLayout());
      jtf = new JTextField(15);
      add(jtf);
      jtf.addActionListener(new ActionListener() {
         public void actionPerformed (ActionEvent ae) {
            System.out.println("Event generated: " + jtf.getText());
         }
      });
      setSize(375, 250);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String args[]) {
      new JTextFieldTest();
   }
}

輸出

JFormattedTextField

  • 格式化文字欄位是JFormattedTextField類的例項,它是JTextField的直接子類。
  • JFormattedTextField就像一個普通的文字欄位,只不過它控制使用者輸入字元的有效性,並且可以與一個formatter關聯,該formatter指定使用者可以輸入的字元。
  • JFormattedTextFieldFormat類的子類,用於構建格式化文字欄位。我們可以建立一個formatter,必要時對其進行自定義。我們可以呼叫帶Format型別引數的JFormattedTextField(Format format)建構函式。
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class JFormattedTextFieldTest extends JFrame {
   JFormattedTextField jftf;
   MaskFormatter mf;
   public JFormattedTextFieldTest() {
      setTitle("JFormattedTextField Test");
      setLayout(new FlowLayout());
      // A phone number formatter - (country code)-(area code)-(number)
      try {
         mf = new MaskFormatter("##-###-#######");
         mf.setPlaceholderCharacter('#');
         jftf = new JFormattedTextField(mf);
         jftf.setColumns(12);
      } catch(Exception e) {
         e.printStackTrace();
      }
      add(jftf);
      setSize(375, 250);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setVisible(true);
   }
   public static void main(String args[]) {
      new JFormattedTextFieldTest();
   }
}

輸出


更新於:2020年2月10日

1K+ 瀏覽量

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.