Java 限制JTextField中的字符数
我尝试使用Java 限制JTextField中的字符数,java,swing,Java,Swing,我尝试使用 try { jFormattedTextField2.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("*****"))); } catch (java.text.ParseException ex) { ex.printStackTrace(); } 但是,当我只输入1个字符
try {
jFormattedTextField2.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("*****")));
} catch (java.text.ParseException ex) {
ex.printStackTrace();
}
但是,当我只输入1个字符时,将始终填充其他4个空格。如何避免填充,同时限制字符数?使用普通的JTextField,而不是JFormattedTextField。通过设置自定义文档,将textfield的文档更改为仅接受特定数量的字符。
JFormattedTextField
会导致恶意UI
您想要的类是
javax.swing.text.DocumentFilter
。这允许您修改命令链样式中的突变。这是一个很好的问题,奇怪的是Swing工具包没有为JTextFields本机提供此功能。但是,我的Udemy.com课程“像孩子一样学习Java”给出了一个很好的答案:
这将猜测游戏文本字段中的字符数限制为3个字符,方法是覆盖keyTyped事件并检查文本字段是否已经有3个字符-如果已经有了,则您正在“消费”键事件(e),以便它不会像正常情况那样被处理
希望这有帮助:)一个拒绝他们的
文档监听器
。@Tom:我不知道我对监听器的想法。我将更改我的答案,只提及自定义文档。Java文本教程中提到了这一点。我同意DocumentFilter是实现这一点的方法。有一个名为“实现文档过滤器”的部分,详细解释了如何使用DocumentFilter
来限制字段的长度,包括示例类DocumentSizeFilter
的源代码,正是这样做的。简单而完美:它解决了我的问题(因为我无法使用其他.getDocument()也不是DocumentFilter解决方案,因为各种原因)+我不明白为什么有人在StackOverflow上的几十篇其他类似帖子中提出了这一点,因为它确实做了人们期望的简单的事情,非常容易实现,简单明了。。。
txtGuess = new JTextField();
txtGuess.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
if (txtGuess.getText().length() >= 3 ) // limit textfield to 3 characters
e.consume();
}
});