Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะ จำกัด จำนวนหลักใน JPasswordField ใน Java ได้อย่างไร


A JPasswordField เป็นคลาสย่อยของ JTextField และอักขระแต่ละตัวที่ป้อนใน JPasswordField สามารถแทนที่ด้วย echo อักขระ. อนุญาตให้ป้อนข้อมูลที่เป็นความลับสำหรับรหัสผ่าน วิธีการที่สำคัญของ JPasswordField คือ getPassword(), getText(), getAccessibleContext() และอื่นๆ โดยค่าเริ่มต้น เราสามารถป้อนตัวเลขจำนวนเท่าใดก็ได้ภายใน JPasswordField หากเราต้องการจำกัดตัวเลขที่ผู้ใช้ป้อนโดยใช้ คลาสDocumentFilter และจำเป็นต้องแทนที่ replace() วิธีการ

ไวยากรณ์

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

ตัวอย่าง

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

ผลลัพธ์

จะ จำกัด จำนวนหลักใน JPasswordField ใน Java ได้อย่างไร