Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để hạn chế số lượng chữ số bên trong JPasswordField trong Java?


A JPasswordField là một lớp con của JTextField và mỗi ký tự được nhập trong JPasswordField có thể được thay thế bằng echo tính cách. Điều này cho phép đầu vào bí mật cho mật khẩu. Các phương thức quan trọng của JPasswordField là getPassword (), getText (), getAccessibleContext () và v.v. Theo mặc định, chúng ta có thể nhập bất kỳ số chữ số nào bên trong JPasswordField. Nếu chúng tôi muốn hạn chế các chữ số do người dùng nhập bằng cách triển khai lớp DocumentFilter và cần ghi đè Replace () phương pháp.

Cú pháp

public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException

Ví dụ

import java.awt.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class JPasswordFieldDigitLimitTest extends JFrame {
   private JPasswordField passwordField;
   private JPanel panel;
   public JPasswordFieldDigitLimitTest() {
      panel = new JPanel();
      ((FlowLayout) panel.getLayout()).setHgap(2);
      panel.add(new JLabel("Enter Pin: "));
      passwordField = new JPasswordField(4);
      PlainDocument document = (PlainDocument) passwordField.getDocument();
      document.setDocumentFilter(new DocumentFilter() {
         @Override
         public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
            String string = fb.getDocument().getText(0, fb.getDocument().getLength()) + text;
               if (string.length() <= 4) {
                  super.replace(fb, offset, length, text, attrs);
               }
         }
      });
      panel.add(passwordField);
      add(panel);
      setSize(400, 300);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String[] args) {
      new JPasswordFieldDigitLimitTest();
   }
}

Đầu ra

Làm cách nào để hạn chế số lượng chữ số bên trong JPasswordField trong Java?