Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339

    Ascoltatore con più costruttori , chiudere la finestra desiderata

    Ciao a tutti

    Ho implementato una classe che funge da ascoltatore per dei bottoni che servono per salvare dei dati.

    Questa stessa operazione può essere fatta da due bottoni ; ossia da un bottone "salva" e da un bottone "si" appartenente ad una frame che ti dice se salvare i dati o meno.

    Questa frame si apre se si sono fatte delle modifiche e si è scelto di uscire dal programma senza salvare.

    nel mio ascoltatore ho messo due costruttori ;

    uno riceve un bottone di una frame "interfaccia principale".
    l'altro riceve un bottone di una frame "notificaSalvataggioCambiamenti"

    codice:
    public class ascoltatoreBottoneSalvaMagazzino implements ActionListener {
    	
    	private InterfacciaPrincipale clickBottoneSalva;
    	private NotificaSalvataggioCambiamenti nsc;
    	
    	public ascoltatoreBottoneSalvaMagazzino(InterfacciaPrincipale clickBottoneSalva){
    		this.clickBottoneSalva = clickBottoneSalva;
    	}
    	
    	public ascoltatoreBottoneSalvaMagazzino(NotificaSalvataggioCambiamenti nsc){
    		this.nsc = nsc;
    	}
    Vorrei far si che l'ascoltatore chiuda la frame NofificaSalvataggioCambiamenti quando viene visualizzata. Ossia "capisca" quando questa frame è diventata attiva per poterla poi chiudere con il metodo dispose();

    Mi aiutate?

    Spero di non aver esposto il mio problema in modo ingarbugliato

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Premesso che:

    1) Questo tipo di design non mi piace e può essere migliorato
    2) Non dovrebbe esserci alcun Frame per fare ciò che di solito viene fatto dalle Dialog
    3) I nomi delle classi dovrebbero iniziare con la MAIUSCOLA

    una soluzione veloce veloce:


    codice:
    public class AscoltatoreBottoneSalvaMagazzino implements ActionListener {
        
        private InterfacciaPrincipale clickBottoneSalva;
        private NotificaSalvataggioCambiamenti nsc;
        private int tipoFinestra;
        
        public ascoltatoreBottoneSalvaMagazzino(InterfacciaPrincipale clickBottoneSalva){
            this.clickBottoneSalva = clickBottoneSalva;
            tipoFinestra = 0;
        }
        
        public ascoltatoreBottoneSalvaMagazzino(NotificaSalvataggioCambiamenti nsc){
            this.nsc = nsc;
            tipoFinestra = 1;
        }
    
        ...
    
        @Override
        public void actionPerformed(ActionEvent ae) {
           ...  // Fai quel che devi fare quando ricevi il click
    
           switch( tipoFinestra ) {
              case 0: break;   // Non devo fare nulla di particolare
              case 1:          // Devo chiudere la finestra
                 nsc.dispose();
                 break;
           }
        }
    }

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Apposto .

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.