JTextField para IPs (Sem mask)

Boa tarde. Estou desenvolvendo uma aplicação que há um campo de IP. Pensei em filtrar o que entra para que fique num formato aceitável. Não estou usando uma máscara ###.###.###.###. pois obriga o usuário a digitar 0 para preencher a mascara. Gostaria de saber se alguém tem um tutorial de como criar um filtro numa Text Field de modo que ela fique como o leitor de IP do windows.

nesse caso acho que a melhor validação seria após o usuário digitar, ou então vc cria 4 jtextfield para o usuário preencher até 3 numero, depois vc junta eles…

Nicksf13, bom dia

A abordagem do himorrivel é de fato a mais rápida de implementar do que a máscara mágica para IP ou um único TextField.

Criando as 04 caixas de texto uma para cada octeto, seu trabalho vai ser ao gravar o IP:

1- Validar se cada valor é um número, pode usar dai um Integer.parseInt(“192”), por exemplo;
2 - Como você vai ter que gravar isso no banco como string, deves cuidar para não gravar coisas bizarras como 192.168.001.002 (exemplo), apenas remova os zeros;
3 - Validar se o foram inseridos os 4 octetos;
4 - gravar o valor seguido dos pontos

Basicamente é isto.

[quote=MisaelJavaPJ]Nicksf13, bom dia

A abordagem do himorrivel é de fato a mais rápida de implementar do que a máscara mágica para IP ou um único TextField.

Criando as 04 caixas de texto uma para cada octeto, seu trabalho vai ser ao gravar o IP:

1- Validar se cada valor é um número, pode usar dai um Integer.parseInt(“192”), por exemplo;
2 - Como você vai ter que gravar isso no banco como string, deves cuidar para não gravar coisas bizarras como 192.168.001.002 (exemplo), apenas remova os zeros;
3 - Validar se o foram inseridos os 4 octetos;
4 - gravar o valor seguido dos pontos

Basicamente é isto.
[/quote]

Mas como eu faria pra dar aquele efeito “windows” (os textos ficarem tudo na “mesma” text field?
EDIT: Existe algum listener para setsize? Pois criei as caixas de texto de modo a ficar no quarteto preenchendo a tela, daí queria que elas ficassem se reajustando caso eu mudasse o tamanho do JPanel.

[quote=Nicksf13][quote=MisaelJavaPJ]Nicksf13, bom dia

A abordagem do himorrivel é de fato a mais rápida de implementar do que a máscara mágica para IP ou um único TextField.

Criando as 04 caixas de texto uma para cada octeto, seu trabalho vai ser ao gravar o IP:

1- Validar se cada valor é um número, pode usar dai um Integer.parseInt(“192”), por exemplo;
2 - Como você vai ter que gravar isso no banco como string, deves cuidar para não gravar coisas bizarras como 192.168.001.002 (exemplo), apenas remova os zeros;
3 - Validar se o foram inseridos os 4 octetos;
4 - gravar o valor seguido dos pontos

Basicamente é isto.
[/quote]

Mas como eu faria pra dar aquele efeito “windows” (os textos ficarem tudo na “mesma” text field?
EDIT: Existe algum listener para setsize? Pois criei as caixas de texto de modo a ficar no quarteto preenchendo a tela, daí queria que elas ficassem se reajustando caso eu mudasse o tamanho do JPanel.[/quote]

Opa, Nicksf13

R: Você poderia “aproximar” as 04 quatro caixas de textos, deixando uma bem do lado da outra, para dar o efeito visual ao usuário de que se trata de um único campo.

R: Dai nesse caso, você poder usar um gerenciador de Layout com BorderLayout, para aplicar basta fazer

JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());

Existem outros, dê uma estudada para a sua necessidade aqui https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

Utilizando um gerenciador de layouts do java, você poderá obter o efeito esperado de auto size dos componentes dentro do seu objeto container(JPanel);

Espero ter te ajudo.

Abraço