Java 如何防止进入'';JFormattedTextField中的字符

Java 如何防止进入'';JFormattedTextField中的字符,java,swing,validation,jtextfield,jformattedtextfield,Java,Swing,Validation,Jtextfield,Jformattedtextfield,如何防止在JFormattedTextField(或JTextField)中输入“.”字符?您还可以编写一个简单的侦听器: addKeyListener(新的KeyAdapter(){ public void keyTyped(KeyEvent e){ 如果(如getKeyChar()=='。){ e、 消费(); } } }); 编辑: 正如注释中提到的@HovercraftFullOfEels,您最好使用它,请参阅以获得良好的解释并参考 编辑2: 您可以尝试: 对于JTextField,您

如何防止在JFormattedTextField(或JTextField)中输入“.”字符?

您还可以编写一个简单的侦听器:

addKeyListener(新的KeyAdapter(){ public void keyTyped(KeyEvent e){ 如果(如getKeyChar()=='。){ e、 消费(); } } });


编辑

正如注释中提到的@HovercraftFullOfEels,您最好使用它,请参阅以获得良好的解释并参考

编辑2
您可以尝试:


对于JTextField,您可以使用DocumentFilter,在这个站点上有很多这样的例子(有些是我写的)。对于JFormattedTextField,编写一个不允许“.”的格式化程序。你肯定已经看过这门课的教程了,对吧?如果是这样,您尝试过什么以及它现在是如何工作的?不要为此使用KeyListener,因为它不会与复制和粘贴一起工作,并且还有其他问题。可以找到DocumentFilter解决方案的一个示例。那么,使用JTextField的DocumentFilter或使用JFormattedTextField的Mask哪一个是最佳解决方案?我不清楚如何编写DocumentFilter来完成我想要的任务。两者都可以很好地工作。有关DocumentFilter的示例,请参阅我在上面的链接中提供的链接。我确实查看了maskFormatter,但我没有真正的格式掩码,因此忽略了它,我只想忽略一个字符,但找到了setInvalidCharacters(),这应该是一个不好的答案-1。在这种情况下,需要避免使用KeyListener,这在本网站和其他网站上已经讨论过多次。首先,此解决方案不适用于复制和粘贴,这是一种基本的文本组件功能。我在最初的评论中已经提到了一个更好的解决方案,DocumentFilter。我重新添加了JFormattedTextField信息,因为它也是有效的。谢谢
MaskFormatter formatter = new MaskFormatter(/*Check out the link*/);
JFormattedTextField tf = new JFormattedTextField(formatter );