我尝试使用
将允许的字符数限制为5 try {
jFormattedTextField2.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("*****")));
} catch (java.text.ParseException ex) {
ex.printStackTrace();
}
然而,当我只输入1个字符时,总会有4个其他空格被填充。如何避免填充,同时限制字符数?
答案 0 :(得分:8)
JFormattedTextField
导致恶意用户界面。
您想要的课程是javax.swing.text.DocumentFilter
。这允许您以命令链样式修改突变。
答案 1 :(得分:1)
使用普通的JTextField代替JFormattedTextField。通过设置自定义文档,将文本字段的文档更改为仅接受特定数量的字符。
答案 2 :(得分:0)
很好的问题,Swing工具包本身并没有为JTextFields包含这个功能,这很奇怪。但是,这是我的Udemy.com课程的一个很好的答案"像孩子一样学习Java":
txtGuess = new JTextField();
txtGuess.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
if (txtGuess.getText().length() >= 3 ) // limit textfield to 3 characters
e.consume();
}
});
这会将猜测游戏文本字段中的字符数限制为3个字符,方法是重写keyTyped事件并检查文本字段是否已有3个字符 - 如果是,则表示"消耗&#34 34;关键事件(e),以便它不会像平常一样得到处理。
希望有所帮助:)