¿Cómo puedo desactivar la entrada de cualquier símbolo, excepto los dígitos a JTextField
?Deshabilitar la entrada de algunos símbolos a JTextField
Respuesta
Opción 1) cambiar su JTextField con un JFormattedTextField, así:
try {
MaskFormatter mascara = new MaskFormatter("##.##");
JFormattedTextField textField = new JFormattedTextField(mascara);
textField.setValue(new Float("12.34"));
} catch (Exception e) {
...
}
opción de entrada 2) del usuario de captura de teclado, así:
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
}
}
});
How to Use Formatted Text Fields
amountField = new JFormattedTextField(NumberFormat.getIntegerInstance());
También puede crear su propio formato de personalizar.
La respuesta es JFormattedTextField
. See my answer on this duplicate question:
Se puede utilizar un
JFormattedTextField
. Constrúyalo usando unNumberFormatter
y solo aceptará números.El
JFormattedTextField
tiene un montón de opciones configurables que le permiten decidir cómo se maneja la entrada incorrecta. Recomiendo mirar la documentación.
Puede añadir una costumbre KeyListener
que intercepta las pulsaciones de teclas y no propagar pulsaciones de teclas no válidas a la JTextField
.
Sólo consumen todos los caracteres que no está un dígito como este:
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
frame.add(new JTextField() {{
addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
if (!Character.isDigit(e.getKeyChar()))
e.consume();
}
});
}});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setVisible(true);
}
Eso no funcionará, por ejemplo, pegar. También depende de cómo el PL & F implemente el 'JTextField' - no funcionaría para un' JComboBox' (¡probablemente!). –
Buen punto Tom. Lo mantendré aquí para referencia! – dacwe
Para un mejor usuario experiencia
Otros han mencionado el uso de JFormattedTextField o KeyListeners para evitar la entrada de datos no válidos, pero desde el punto de vista de la usabilidad Me resulta muy molesto empezar a escribir en un campo y no ocurre nada.
Para proporcionar una mejor experiencia de usuario, puede permitir que el usuario ingrese valores no numéricos en el campo, pero use un validador para proporcionar comentarios al usuario y deshabilite el botón de enviar.
Esto funcionó para mí. Echar un vistazo.
public void keyTyped(KeyEvent e)
{
char c = e.getKeyChar();
if (!((c >= '0') && (c <= '9') ||
(c == KeyEvent.VK_BACK_SPACE) ||
(c == KeyEvent.VK_DELETE))) {
getToolkit().beep();
e.consume();
}
}
- 1. Java JTextField con sugerencia de entrada
- 2. Deshabilitar VS '"descargar símbolos públicos"
- 3. Cómo deshabilitar la entrada a un widget de texto, pero ¿permite la entrada de programación?
- 4. mvc3 - Cómo deshabilitar htmlencode de símbolos de la fuente
- 5. Perl, deshabilitar la entrada de amortiguación
- 6. Cómo convertir JTextField a String y String en JTextField?
- 7. Cuadro de entrada HTML - Deshabilitar
- 8. JTextField: Cómo configurar el texto a la izquierda de JTextField cuando el texto es demasiado largo
- 9. Deshabilitar algunos archivos en el proyecto XCode desde la compilación
- 10. pgf/tikz: Símbolos de cadena como coordenadas de entrada
- 11. Cómo deshabilitar un tipo de entrada = texto?
- 12. Deshabilitar el recuento automático de referencias para algunos archivos
- 13. Cómo borrar JTextField cuando el mouse hace clic en JTextField
- 14. Caracteres alemanes en JTextField
- 15. Cómo desenfocar un JTextField
- 16. Habilitar ViewState para algunos controles y deshabilitar para otros/página
- 17. Texto de ejemplo en JTextField
- 18. Deshabilitar temporalmente algunos complementos utilizando un agente patógeno en vim.
- 19. Cómo deshabilitar la carga de símbolos al depurar un programa de Visual C++?
- 20. Java Swing de JTextField inserción
- 21. Problemas de JTextField con Numpad
- 22. ¿Cómo validar un JTextField?
- 23. Secuencia de comandos para habilitar/deshabilitar elementos de entrada?
- 24. ¿Puedo anular jQuery .val() solo para algunos elementos de entrada?
- 25. ¿Cómo deshabilitar la entrada multilínea que cambia de tamaño de forma dinámica por el usuario?
- 26. ¿Cómo puedo agregar un JTextField a la barra de menús de JFrame?
- 27. ¿Deshabilitar la protección CSRF a veces justificado?
- 28. Deshabilitar el enfoque automático de entrada con el validador jQuery
- 29. Encontrar la posición del texto del cursor en JTextField
- 30. ¿Cuáles son algunos ejemplos de casos de uso para literales de símbolos en Scala?
posible duplicado de [Java JTextFields] (http://stackoverflow.com/questions/4442004/java-jtextfields) – jjnguy
posible duplicado de [¿Hay alguna manera de aceptar sólo valores numéricos en un JTextField?] (http://stackoverflow.com/questions/1313390/is-there-any-way-to-accept-only-numeric-values-in-a-jtextfield) –
Suena como si un JSpinner * pudiera * ser lo que el usuario de hecho necesita aquí. –