Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Khác biệt giữa JTextField và JFormattedTextField trong Java

JTextField dùng cho văn bản thuần túy trong khi JFormattedTextField mở rộng JTextField và dùng để đặt định dạng cho văn bản như số điện thoại, email, ngày tháng.

JTextField

  • JTextField là component quan trọng cho phép nhập văn bản đơn dòng.
  • Tạo giao diện ActionListener khi nhập input và CaretListener khi con trỏ di chuyển.
  • Cũng tạo MouseListener và KeyListener.

Ví dụ JTextField

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();
    }
}

Kết quả

Khác biệt giữa JTextField và JFormattedTextField trong Java

JFormattedTextField

  • Formatted text field là instance của JFormattedTextField - subclass trực tiếp của JTextField.
  • Giống text field bình thường nhưng kiểm soát tính hợp lệ của ký tự người dùng nhập và liên kết với formatter chỉ định ký tự cho phép.
  • JFormattedTextField dùng subclass của Format để xây dựng. Tạo formatter, tùy chỉnh nếu cần, gọi constructor 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();
    }
}

Kết quả

Khác biệt giữa JTextField và JFormattedTextField trong Java