JPasswordField হল JTextField-এর একটি সাবক্লাস এবং JPasswordField-এ ইনপুট করা প্রতিটি ক্যারেক্টার একটি ইکو ক্যারেক্টারের দ্বারা প্রতিস্থাপিত হতে পারে। এটি পাসওয়ার্ডের জন্য গোপনীয় ইনপুট অনুমতি দেয়। 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();
}
}
আউটপুট
