【问题标题】:How to limit JPasswordField to 4 digits? [duplicate]如何将 JPasswordField 限制为 4 位? [复制]
【发布时间】:2017-05-16 17:49:19
【问题描述】:

我刚刚在这里看到了一些问题,但没有一个可以为我解决问题。我有一个JPasswordField,我需要用户不能在 EscPin JPasswordField 中输入超过 4 位数字

private void EscPinActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
}

private javax.swing.JButton Entrar;
private javax.swing.JTextField EscNConta;
private javax.swing.JPasswordField EscPin;
private javax.swing.JLabel Logo;
private javax.swing.JLabel NConta;
private javax.swing.JLabel Pin;
private javax.swing.JButton Sair;

【问题讨论】:

  • 这对我不起作用
  • @Carcigenicate 不起作用,有没有办法在不创建新类的情况下做到这一点

标签: java jpasswordfield


【解决方案1】:

你必须得到JPasswordField的内部Document。试试这个就行了。

PlainDocument d=(PlainDocument) jPasswordField1.getDocument();
d.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); //To change body of generated methods, choose Tools | Templates.
        }



    });

【讨论】:

  • 我把这个放在哪里了?我输入了 JPasswordField 的private void,用户可以输入超过 4 位数字
  • 构造函数内部。
  • @Rui Maia 你能接受答案吗?这对我有很大帮助。
猜你喜欢
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 2013-07-16
  • 2011-11-12
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
相关资源
最近更新 更多