禁用向JTextField输入一些符号

mak*_*aks 7 java swing

如何禁用除数字之外的任何符号的输入JTextField

gor*_*lok 20

选项1)使用JFormattedTextField更改您的JTextField,如下所示:

try {
   MaskFormatter mascara = new MaskFormatter("##.##");
   JFormattedTextField textField = new JFormattedTextField(mascara);
   textField.setValue(new Float("12.34"));
} catch (Exception e) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

选项2)从键盘捕获用户的输入,如下所示:

JTextField textField = new JTextField(10);
textField.addKeyListener(new KeyAdapter() {
   public void keyTyped(KeyEvent e) {
      char c = e.getKeyChar();
      if ( ((c < '0') || (c > '9')) && (c != KeyEvent.VK_BACK_SPACE)) {
         e.consume();  // ignore event
      }
   }
});
Run Code Online (Sandbox Code Playgroud)


jjn*_*guy 7

答案是JFormattedTextField. 请参阅我对这个重复问题的回答:

你可以使用JFormattedTextField.使用a构造它NumberFormatter,它只接受数字.

JFormattedTextField有一堆可配置的选项,可以让您决定输入的错误处理方式.我建议查看文档.