【问题标题】:Limiting TextField inputs限制 TextField 输入
【发布时间】:2014-03-01 14:21:24
【问题描述】:

我正在尝试创建一个限制用户输入的文本字段。 我有这个代码:

 private void jTextField5KeyTyped(java.awt.event.KeyEvent evt) {                                     
//This limits the input:
 if(jTextField5.getText().length()>=2) {
    jTextField5.setText(jTextField5.getText().substring(0, 1));
}
}                  

它成功地限制了输入。但是,当我尝试按键盘上的其他字符时,它会更改文本字段上的最后一个字符。 有什么想法可以阻止这种情况吗?我知道其他人会说我应该使用 Document(Can't remember) 来制作这种东西,但我不能。我不知道如何在netbeans中做到这一点。 请帮忙。

【问题讨论】:

  • 您可以为此扩展PlainDocument
  • 使用DocumentSizeFilter
  • 有人能告诉我怎么做吗?我在这种事情上真的很慢。对不起:(

标签: java netbeans jtextfield


【解决方案1】:

试试这个使用PlainDocument的例子:

class JTextFieldLimit extends PlainDocument {

private int limit;

JTextFieldLimit(int limit) {
    super();
    this.limit = limit;
}

JTextFieldLimit(int limit, boolean upper) {
    super();
    this.limit = limit;
}

public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
    if (str == null) {
        return;
    }

    if ((getLength() + str.length()) <= limit) {
        super.insertString(offset, str, attr);
    }
}
}

public class Main extends JFrame {

JTextField textfield1;
JLabel label1;

public void init() {
    setLayout(new FlowLayout());
    label1 = new JLabel("max 10 chars");
    textfield1 = new JTextField(10);
    add(label1);
    add(textfield1);
    textfield1.setDocument(new JTextFieldLimit(110));///enter here the Maximum input length you want
    setSize(300, 300);
    setVisible(true);
}


}

【讨论】:

【解决方案2】:

这是一个简单的方法:

private void textFieldKeyTyped(java.awt.event.KeyEvent evt) {                       
 if(textField.getText().length()>=2) {  
   evt.consume();
 }
}

【讨论】:

  • 你已经标记了它:) 左边的复选框现在是绿色的,这意味着你把它标记为正确答案..
  • 哦。好的! :D 再次感谢
  • 有个问题,我把2改成11的时候,有冲突。
  • 你遇到了什么冲突?
  • -1 这是一种糟糕的方法,可能导致文档突变错误,没有考虑到如果用户在字段上粘贴文本或调用setText 会发生什么。 DocumentFilter 将是更合适的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
  • 2013-12-21
  • 2021-10-18
相关资源
最近更新 更多