Como criar máscara que suporta ip e ipv6

Bom dia, estou com um problema espero que alguém consiga me ajudar.

Estou em uma aplicação Desktop que precisa de um campo para colocar o ip (também deve suportar ipv6).

Como posso criar uma máscara que suporte ambos?

Atualmente tenho uma máscara de ip normal

... txtIp = new JFormattedTextField(new MaskFormatter("###.###.###.###"));

O IP “normal” é o IPV4, certo?

Essa máscara realmente é de IPV4? ela aceita 999? porque se aceita você precisa repensá-la.

não sei muito bem como funciona esse MaskFormatter, mas se aceitar expressões regulares você pode simplesmente usar um OR.

Obrigado, vou dar uma pesquisada no MaskFormatter

Quanto ao formato do IPV6, tem um cuidado especial que você precisa tomar, veja: [quote=Wikipedia]Os endereços IPv6 são normalmente escritos como oito grupos de 4 dígitos hexadecimais. Por exemplo,
2001:0db8:85a3:08d3:1319:8a2e:0370:7344

Se um grupo de vários dígitos seguidos for 0000, pode ser omitido. Por exemplo,
2001:0db8:85a3:0000:0000:0000:0000:7344

é o mesmo endereço IPv6 que:
2001:0db8:85a3::7344[/quote]

Fonte: http://pt.wikipedia.org/wiki/IPv6

Use expressão regular…

Tem essa classe pronta…

http://javaaberto.blogspot.com.br/2012/11/mascara-para-ip.html

charleston10, nesse link ele não é só para ip??

estou tentando para ipv6, na verdade, precisa aceitar tanto ip, quanto ipv6

Vc manja expressao regular…
Nessa classe da pra vc mudar a expressao e validar oq vc quiser… mas so na String da expressao, vc mudar o conteudo dela…
da pra validar e-mail, rg, cpf… oq vc quiser… até seu nome…

tenta procurar pela expressao regular para IPv6 depois so alterar la…

eu encontrei esse, mas nem sei se é…
Não assusta não, é assim mesmo… rsrs

\A(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\z

http://blogs.msdn.com/b/mpoulson/archive/2005/01/10/350037.aspx