Estou com a seguinte situação: Sistema em swing, tenho um campo JPasswordField e gostaria de fazer como em alguns sistemas web e botar um botãozinho do lado “show” para tornar a senha visível,
tem alguma propriedade do JPasswordField que mande ele mostrar a senha sem os “*”?? ví que da para mudar o echo, esse asterisco por outro char, mas não achei como não ter isso.
Valeu Roger, é exatamente isso mesmo, e desculpe a displição de não visto isso antes de postar, li rapidamente os métodos da doc, devo ter passado reto nisso.
att, Daniel Dias
E
entanglement
Que interessante, não sabia disso. Fiz um exemplo, funciona direitinho.
O Javadoc é um bocadinho chato de entender, ele diz “0” mas você poderia entender que é o caracter ‘0’ (ASCII 48 ) em vez de ser o caracter ‘\u0000’ (ASCII 0). Rodando o exemplo abaixo, você vê que tem de ser ‘\u0000’.
packageguj;importjava.awt.EventQueue;importjavax.swing.JFrame;importjavax.swing.JPanel;importjava.awt.BorderLayout;importjavax.swing.JButton;importjavax.swing.JPasswordField;importjava.awt.event.ActionListener;importjava.awt.event.ActionEvent;publicclassExemploRevelarJPasswordFieldextendsJFrame{privateJPanelpanel;privateJButtonbtnRevelar;privateJButtonbtnEsconder;privateJPasswordFieldpasswordField;/** * Launch the application. */publicstaticvoidmain(String[]args){EventQueue.invokeLater(newRunnable(){publicvoidrun(){try{ExemploRevelarJPasswordFieldframe=newExemploRevelarJPasswordField();frame.setVisible(true);}catch(Exceptione){e.printStackTrace();}}});}/** * Create the frame. */publicExemploRevelarJPasswordField(){setTitle("Exemplo: Revelar JPasswordField");setBounds(100,100,450,105);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);getContentPane().add(getPanel(),BorderLayout.SOUTH);getContentPane().add(getPasswordField(),BorderLayout.CENTER);}privateJPanelgetPanel(){if(panel==null){panel=newJPanel();panel.add(getBtnRevelar());panel.add(getBtnEsconder());}returnpanel;}privateJButtongetBtnRevelar(){if(btnRevelar==null){btnRevelar=newJButton("Revelar");btnRevelar.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(passwordField.getEchoChar()!='\u0000')previousEchoChar=passwordField.getEchoChar();passwordField.setEchoChar('\u0000');}});}returnbtnRevelar;}privateJButtongetBtnEsconder(){if(btnEsconder==null){btnEsconder=newJButton("Esconder");btnEsconder.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){passwordField.setEchoChar(previousEchoChar);}});}returnbtnEsconder;}privateJPasswordFieldgetPasswordField(){if(passwordField==null){passwordField=newJPasswordField();passwordField.setText("Hello, world!");}returnpasswordField;}privatecharpreviousEchoChar='\u2022';}
D
Danieldt
ficou massa mlq, valeu pela contribuição pro post… realmente eles colocaram esse 0 meio confuso lá na doc. Voce pode usar ‘\u0000’ ou pode usar o int mesmo dando parse "(char)0"
o meu ficou: