我想将要插入JTextField的字符数限制为10个字符。我在netbeans.thanks下使用了一个图形界面。
答案 0 :(得分:1)
为防止用户在文本字段中输入更多10个字符,您可以使用文档。
通过扩展PlainDocument
并更改行为覆盖
public void insertString(...) throws BadLocationException
这是一个例子
public class MaxLengthTextDocument extends PlainDocument {
//Store maximum characters permitted
private int maxChars;
@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
// the length of string that will be created is getLength() + str.length()
if(str != null && (getLength() + str.length() < maxChars)){
super.insertString(offs, str, a);
}
}
}
在此之后,只需在JTextField
中插入您的实现,这样:
...
MaxLengthTextDocument maxLength = new MaxLengthTextDocument();
maxLength.setMaxChars(10);
jTextField.setDocument(maxLength);
...
那就是它!
答案 1 :(得分:0)
最好的是你将获得运行演示;)
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 static void main(String[]args){
new Main().init();
}
public void init() {
setLayout(new FlowLayout());
label1 = new JLabel("max 10 chars");
textfield1 = new JTextField(15);
add(label1);
add(textfield1);
textfield1.setDocument(new JTextFieldLimit(10));
setSize(300,300);
setVisible(true);
}
}
答案 2 :(得分:0)
阅读Implementing a DocumentFilter上Swing教程中的部分,了解更新的解决方案。
此解决方案将适用于任何Document,而不仅仅是PlainDocument。