Ho capito....bisogna utilizzare un riferimento.
Vorrei evitare di adottare una soluzione poco pulita , ossia di creare 25 riferimenti per le mie 25 finestre da controllare.
Credevo di aver trovato una soluzione migliore , ma mi sono bloccato.
Guarda cosa ho fatto io...
Ho messo un riferimento nella finestra da controllare e un metodo per controllarlo :
codice:
public class FrameAggiungiArticolo extends JFrame {
static boolean faaAperta; // IL RIFERIMENTO
public FrameAggiungiArticolo(){
super();
faaAperta = true; //SETTATO A TRUE QUANDO SI INIZIALIZZA LA FINESTRA
//ALTRO CODICE...
}
//ALTRO CODICE
public static boolean IsAperta(){
return faaAperta;
}
public static void Chiudi(){
faaAperta = false;
}
}
Nell'ascoltatore controllo se il riferimento è true :
codice:
public class ascoltatoreBottoneAggiungiArticolo implements ActionListener {
private InterfacciaPrincipale clickBottoneAggiungiArticolo;
public ascoltatoreBottoneAggiungiArticolo(InterfacciaPrincipale clickBottoneAggiungiArticolo){
this.clickBottoneAggiungiArticolo = clickBottoneAggiungiArticolo;
}
public void actionPerformed(ActionEvent e){
if(!FrameAggiungiArticolo.IsAperta())
new FrameAggiungiArticolo();
}
}//ASCOLTATORE BOTTONE AGGIUNGI ARTICOLO
Ed Ora la nota dolente :
Dovrei settare il riferimento a false ogni volta che chiudo una finestra
Il fatto è che ho scritto un ascoltatore generico (valido per più finestre) per la chiusura , ma non so come fare ad istanziare il riferimento a false .
codice:
package Ascoltatori;
import interfacciaGrafica.FrameVendiArticolo;
import interfacciaGrafica.InterfacciaPrincipale;
import interfacciaGrafica.NotificaSalvataggioCambiamenti;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
public class ascoltatoreChiudiFinestra implements ActionListener {
private JFrame RifJFrame;
private InterfacciaPrincipale RifInterfacciaP;
private FrameVendiArticolo RifFrameVA;
private int tipoFinestra;
public ascoltatoreChiudiFinestra(JFrame RifJFrame){
this.RifJFrame = RifJFrame;
tipoFinestra = 0;
}
public ascoltatoreChiudiFinestra(NotificaSalvataggioCambiamenti RifJFrame , InterfacciaPrincipale RifInterfacciaP){
this.RifJFrame = RifJFrame;
this.RifInterfacciaP = RifInterfacciaP;
tipoFinestra = 1;
}
public ascoltatoreChiudiFinestra(FrameVendiArticolo RifFrameVA){
this.RifFrameVA = RifFrameVA;
tipoFinestra = 2;
}
public void actionPerformed(ActionEvent e){
switch(tipoFinestra){
case 0 :
RifJFrame.dispose();
break;
case 1 :
RifJFrame.dispose();
RifInterfacciaP.dispose();
break;
case 2 :
RifFrameVA.dispose();
InterfacciaPrincipale.Jtable.setRowSelectionAllowed(true);
}
}
}//ASCOLTATORE PER CHIUDERE LE FINESTRE
Cioè io ricevo un JFrame generico ; come faccio ad invocare quel metodo per quel tipo di JFrame?