Eccolo:
codice:
import Frame3.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
import java.awt.*;
public class Accesso extends JFrame {
private static final long serialVersionUID = 1L;
public Frame3 reale; // Un riferimento alla finestra secondaria
//Creo i componenti
JLabel Lab1 = new JLabel("Utente: ", SwingConstants.LEFT);//ipLabel
JLabel Lab2 = new JLabel("Password: ", SwingConstants.LEFT);//passwordLabel
JTextField utente = new JTextField();//Utente
JPasswordField password = new JPasswordField();//passwordText
JButton pulsante = new JButton("OK");
// Definisco il metodo che servirà per definire i limiti di layout
void impostaLimite(GridBagConstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy) {
gbc.gridx = gx;
gbc.gridy = gy;
gbc.gridwidth = gw;
gbc.gridheight = gh;
gbc.weightx = wx;
gbc.weighty = wy;
}
public Accesso() { // Il costruttore della classe
super("Accesso...");
setSize(300, 120);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel pannello = new JPanel();
// imposta le proprietà dei componenti
utente.setEditable(true);
password.setEchoChar('*');
//definisce il gestore di layout
GridBagLayout grigliaAvanzata = new GridBagLayout();
GridBagConstraints limite = new GridBagConstraints();
pannello.setLayout(grigliaAvanzata);
//definisce i limiti di ogni componente e lo aggiunge al pannello
impostaLimite(limite,0,0,1,1,35,0); //etichetta lab1-utente
limite.fill = GridBagConstraints.NONE;
limite.anchor = GridBagConstraints.EAST;
grigliaAvanzata.setConstraints(Lab1,limite);
pannello.add(Lab1);
impostaLimite(limite,1,0,1,1,65,100); //campo-utente
limite.fill = GridBagConstraints.HORIZONTAL;
grigliaAvanzata.setConstraints(utente,limite);
pannello.add(utente);
impostaLimite(limite,0,1,1,1,0,0); //etichetta lab2-password
limite.fill = GridBagConstraints.NONE;
limite.anchor = GridBagConstraints.EAST;
grigliaAvanzata.setConstraints(Lab2,limite);
pannello.add(Lab2);
impostaLimite(limite,1,1,1,1,0,100); //campo-password
limite.fill = GridBagConstraints.HORIZONTAL;
grigliaAvanzata.setConstraints(password,limite);
pannello.add(password);
//JButton e suo ricevitore
impostaLimite(limite,0,2,2,1,0,50); // Pulsante
limite.fill = GridBagConstraints.NONE;
limite.anchor = GridBagConstraints.CENTER;
grigliaAvanzata.setConstraints(pulsante,limite);
Receiver1 receiver1 = new Receiver1();//(attenzione alla cronologia) creo l'ascoltatore
new Receiver1(this);
pulsante.addActionListener(receiver1);//lo associo al JButton
pannello.add(pulsante);//includo il JButton nel pannello
setContentPane(pannello); // rendo il pannello parte del frame
setVisible(true); // Visualizzo il tutto!
}
class Receiver1 implements ActionListener {
private Accesso a;
public Receiver1(Accesso a) {
this.a = a;
}
public void actionPerformed(ActionEvent e) {
reale = new Frame3();
reale.setVisible( true );//qui apro Frame3
a.dispose();//qui chiudo il frame di accesso
}
}
public static void main(String argv[]) {
Accesso nf = new Accesso();
}
}
oltretutto ora in compilazione mi da un errore che non capisco:
codice:
Accesso.java:88: error: The constructor Accesso.Receiver1() is undefined
Receiver1 receiver1 = new Receiver1();//(attenzione alla cronologia) creo l'ascoltatore