Autor
|
Tema: Formateo dinámico en JTextField (Leído 2,078 veces)
|
JenselG
Desconectado
Mensajes: 18
|
Hola a todos, necesito ayuda para lograr un formateo dinámico en un JTextField.
Necesito que al ingresar un código numérico de 10 dígitos el JTextField lo ordene en pares separados por espacios. Es decir que al ingresar el código 0123456789 quede así 01 23 45 67 89, todo eso en tiempo real.
¿Como puedo hacerlo?
(El código se trata como una cadena no como entero).
Gracias.
|
|
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
Te refieres a cuando obtengas el valor del JTextField que lo formateé de esa manera?
|
|
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
|
|
|
JenselG
Desconectado
Mensajes: 18
|
Si a eso me refiero, que al ingresar los números se vayan ordenando automáticamente
|
|
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
- Primero obtén el valor del JTextField
- Conviértelos a un array lista lo que quieras, que sea un array o lista XD
- Luego recorres esa lista
- Cuentas 2 posiciones y le setteas un " "
package com.prueba.foro; import javax.swing.*; import java.awt.*; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.IntStream; /** * @autor rub´n */ public class FormatearJTextField extends JFrame { private final JLabel jLabelTitulo = new JLabel("Introduce 10 números, enter para validar"); private static final String ESPACIOS = "\\s+"; private static final String LETRAS = "[a-zA-Z]+"; private static final String NUMEROS_HASTA_10 = "[0-9]{10}"; private static final String NUMEROS = "[0-9]+"; public FormatearJTextField() { super("Formatear JTextField 00 00 00..."); configureLayouts(); configureJFrame(); } private void configureJFrame() { add(mainJPanel); pack(); setLocationRelativeTo(null); setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE); setVisible(true); } private void configureLayouts() { mainJPanel. setBorder(BorderFactory. createEmptyBorder(10, 10, 10, 10)); mainJPanel. add(Box. createVerticalStrut(20)); mainJPanel. add(Box. createVerticalStrut(20)); listenerJTextField(); } /** * Listener del JTextField */ private void listenerJTextField() { jTextField.addActionListener(e -> { final String valor = jTextField. getText(); final Predicate<String> predicate = p -> p.replaceAll(ESPACIOS,"") .matches(NUMEROS_HASTA_10); if (validar(valor, predicate)) { JOptionPane. showMessageDialog(null, "Valores correctos"); final char[] chars = valor.toCharArray(); String sResultado = IntStream. range(0, chars. length) .mapToObj(index -> chars[index]) .collect(Collectors.toList()) .toString() .replaceAll(ESPACIOS, "")//quitar espacios en blanco .replaceAll(",", "")//remover , .replaceAll("\\[", "")//remover [ .replaceAll("\\]", "");//remover ] final StringBuilder sb = new StringBuilder(); for (int f = 0; f < sResultado.length() - 1; f += 2) { sb.append(sResultado.substring(f, (f + 2)).concat(" ")); } jLabel.setText(""); jLabel.setText("Resultado: " + sb.toString()); jTextField.setText(sb.toString()); } else { final String sError = valor. replaceAll(ESPACIOS, ""); if (validar(sError, p -> p.matches(LETRAS))) { JOptionPane. showMessageDialog(null, "Valores invalidos"); } else if(validar(sError, p -> p.matches(NUMEROS))) { JOptionPane. showMessageDialog(null, "cantidad de numeros es: " + sError. length()); } else { JOptionPane. showMessageDialog(null, "Valores invalidos"); } } }); } /** * Validador * * @param value valor obtenido del JTextField * @return boolean */ private boolean validar (final String value, final Predicate <String > predicate ) { return predicate.test(value); } public static void main (String... blabla) { new Thread(FormatearJTextField ::new). start(); } }
|
|
« Última modificación: 21 Marzo 2020, 13:15 pm por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
|
|
|
JenselG
Desconectado
Mensajes: 18
|
Muchas muchas muchas gracias amigo,
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
pasar de una JTextField
Java
|
mapers
|
6
|
11,776
|
10 Abril 2011, 02:07 am
por Shell Root
|
|
|
jTextField
Java
|
mapers
|
2
|
3,999
|
3 Abril 2011, 03:59 am
por sapito169
|
|
|
Duda JTextField
Java
|
charmedever
|
3
|
2,661
|
6 Julio 2012, 18:54 pm
por charmedever
|
|
|
Ayuda JTextField
Java
|
charmedever
|
1
|
2,492
|
10 Julio 2012, 06:32 am
por leogtz
|
|
|
Imprimir int en jTextField
Java
|
goyito19
|
2
|
2,650
|
12 Junio 2014, 07:29 am
por goyito19
|
|