Estou tentando fazer um JOptionPane com mascara para entrada de dados, mas ta dificil
Vi o exemplo da sun de CustomDialog.java mas ta muito comlpexo, então resolvi fazer uma coisa simples:
a ideia é implementar esse método:
mas ai que ta o problema, pois não sei como vou mandar retornar os valores quando o usuario clicar no botao, olha como está:
public static String mostraInputDialogComMascara(JComponent parent, String titulo, String texto, String mascara)
{
final JInternalFrame frame = new JInternalFrame(titulo, true, true, true, true);
JFormattedTextField textField = new JFormattedTextField(Ajudante.getMascara(mascara));
frame.setLayout(new MigLayout("", "[center]20[center]", "[center]"));
frame.add(new JLabel(texto), "wrap");
JButton ok = new JButton("OK");
ok.addActionListener(new ListenerOk());
JButton cancelar = new JButton("Cancelar");
cancelar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
frame.dispose();
} });
frame.add(ok);
frame.add(cancelar);
}\
Você pode passar um array de Object na assinatura do showConfirmDialog que serão os componentes do JOptionPane…
exemplo: digamos que você queira uma caixa de diálogo com uma mensagem informativa e um campo com máscara
MaskFormatter formato = null;
try {
formato = new MaskFormatter("###.###.###-##");
} catch (ParseException e) {
e.printStackTrace();
}
JLabel label = new JLabel("Informe seu CPF:");
JFormattedTextField texto = new JFormattedTextField(formato);
if (JOptionPane.showConfirmDialog(null, new Object[] {label, texto},
"Autorização", JOptionPane.OK_CANCEL_OPTION)==JOptionPane.YES_OPTION) {
System.out.println(texto.getText());
}
assim só mostrará o CPF na console se o usuário clicar em OK…
sim mas agora tenho um problema
logo q o OptionPane aparece, fica muito bom mas o Focus vai para o botao OK
e eu quero que vá para o TextField, ja tentei de tudo mas nao funcionou
o que faco??
Só que agora tô com um outro problema… os campos de texto ficam muito pequenos no JOptionPane (não dá para digitar nem 3 números)… tentei redimesiona-los mas só dá erro… tem tb o problema do campo de texto se apagar se nao forem digitados 3 números (para o caso da parte do IP ter menos de 3 numeros…) e ainda tem o problema do foco que ja fica direto no OK… ahsahsahuhsau
O foco vc conserta igual eu fiz, com o window focus listener.
Agora pra tamanho dos textfield e vc quer tem q setar size e usar gerenciador de layout melhor…
Vc pode tambem, fazer um textfield só pra tudo tipo assim
Mascara seria ###.###.###.###
sacou?
Se quiser separado os 4 textfield briga com os gerenciadores de layout ai…
Desculpa qq coisa eh q é sexta, ai ja viu néé!