Vediamo come realizzare un pannello di login in Java: il tutto sarà contenuto in una JDialog, quindi la struttura del codice sarà molto simile a quella proposta in Guida alle jDialog in Java.
I parametri richiesti saranno il nickname e la password: per il primo basterà il solito JTextField mentre per il campo password utilizzeremo il JPasswordField.
Come si usa un JPasswordField?
Un JPasswordField è un campo che permette di leggere una password visualizzando i famosi asterischi al posto della parola in chiaro.
Il metodo che utilizzeremo per ricavare la password non sarà quindi il solito getText() ma una funzione propria di questo elemento: getPassword(), che restituisce l’array di caratteri che fanno parte della password.
Login
Passiamo alla visualizzazione del codice:
import java.awt.Dimension;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import javax.swing.*;public class login implements ActionListener{JButton ok = new JButton("OK");final JTextField user_tf = new JTextField();final JPasswordField pass_tf = new JPasswordField();JDialog frame;private String usr = "";private String psw = "";public login(){frame = new JDialog();frame.setModal(true);JPanel panel = new JPanel();JLabel login_label = new JLabel("Login");// pannellopanel.setSize(new Dimension(300,200));panel.setMaximumSize(new Dimension(300,200));panel.setMinimumSize(new Dimension(300,200));panel.setPreferredSize(new Dimension(300,200));panel.setLayout(null);// JLabelJLabel user = new JLabel("Username");JLabel password = new JLabel("Password");// login labellogin_label.setBounds(36, 20, 150,20);login_label.setFont(new Font("Impact",Font.TRUETYPE_FONT,20));// ok buttonok.setBounds(260, 170, 20, 18);ok.setBorder(null);ok.addActionListener(this);ok.setFont(new Font("Impact",Font.TRUETYPE_FONT,16));//user,password labeluser.setBounds(36, 70, 100, 20);password.setBounds(36, 112, 100, 20);// campi di inserimentouser_tf.setBounds(120, 70, 140, 20);pass_tf.setBounds(120, 112, 140, 20);// aggiungo al panello principalepanel.add(login_label);panel.add(user);panel.add(password);panel.add(user_tf);panel.add(pass_tf);panel.add(ok);frame.add(panel);frame.setResizable(false);frame.pack();frame.setVisible(true);frame.addWindowListener(new WindowListener(){@Overridepublic void windowActivated(WindowEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void windowClosed(WindowEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void windowClosing(WindowEvent arg0) {System.exit(0);}@Overridepublic void windowDeactivated(WindowEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void windowDeiconified(WindowEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void windowIconified(WindowEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void windowOpened(WindowEvent arg0) {// TODO Auto-generated method stub}});}public void setParam(){usr = user_tf.getText();// Creo la stringa dall'arraypsw = new String(pass_tf.getPassword());}public String [] getData(){String [] info = {usr,psw};return info;}public static void main(String [] Args){String [] info = new login().getData();System.out.println("Username - " + info[0]+"\n");System.out.println("Password - " + info[1]+"\n");System.exit(0);}@Overridepublic void actionPerformed(ActionEvent ae) {setParam();frame.dispose();}}
