Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568

    [java] eventi apertura window

    ma che diamine...
    non funziona, mentre dovrebbe partire il metodo elaboraProcessi()all'apertura della finestra...

    come mai ???

    codice:
    	private void initialize() {
    		
    		
    		// CREAZIONE PARTI GRAFICHE
    		this.setSize(193, 97);
    		this.setContentPane(getJContentPane());
    		Dimension d = getToolkit().getScreenSize();
    		setLocation((d.width-this.getWidth())/2, (d.height-this.getHeight())/2);
    
    		this.setVisible(true);
    		
    		this.addWindowListener(new java.awt.event.WindowAdapter() { 
    			public void windowOpened(java.awt.event.WindowEvent e) {    
    				elaboraProcessi();
    			}
    		});
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    non vorrei dire un idiozia... ma prova a mettere
    this.setVisible(true) dopo l'aver aggiunto il listener, il metodo windowOpen viene chiamato la prima volta che la finestra viene resa visibile, in quel modo tu scateni l'evento prima di dire come dovrà essere intercettato.

    Prova sennò posta gli eventuali errori che vengono stampati in output.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    si così funziona.. solo che la finestra rimane grigia fino a che non ho elaborato tutto il codice...

    non c'è un modo per implementare setVisible(true) ??? :master:
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    prova
    public void setVisible(boolean b) {
    // codice
    super.setVisible(b);
    }

  5. #5
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    funziona ma non cambia nulla... finestra grigia che esegue il codice...
    ma non è che devo usare un Jwindow o qualcos'altro ???
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  6. #6
    Devi da usa' i Thread!!!
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  7. #7
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ovvero cosa devo fare ???
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  8. #8
    Creare un thread. Nel thread esegui elaboraProcessi.
    I dettagli dipendono dall'architettura della tua applicazione.
    Per esempio:

    codice:
            this.addWindowListener(new java.awt.event.WindowAdapter() {
                public void windowOpened(java.awt.event.WindowEvent e) {
                    Runnable r = new Runnable() {
                        public void run () {
                            elaboraProcessi();
                        }
                    };
                    (new Thread (r)).start();
                }
            });
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  9. #9
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    non ho capito il senso... cmq funziona alla grande !!!
    mi devo studiare i thread
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  10. #10
    mi devo studiare i thread
    Putroppo in Swing ci fai poco senza...

    Il senso e' che mentre viene eseguito il gestore di un evento, tutti gli altri eventi sono congelati in coda: devono attendere che questo finisca.
    Questo perche' sono tutti serviti da un unico thread, chiamato "dispatch event thread". Qualsiasi operazione su componenti Swing dovrebbe avvenire all'interno di questo thread. In caso contrario gli esiti sono imprevedibili!

    Quello che faccio e' creare un nuovo thread di esecuzione che elabora la tua procedura "parallelamente"[*] al flusso di esecuzione principale.
    In pratica il tuo programma continua normalmente _MENTRE_ (e non dopo che!!!) elaboraProcessi() viene completata.

    P.S. La soluzione che ti ho postato non e' sincronizzata: in pratica non sai in quale momento l'esecuzione di elaboraProcessi() e' stata completata!!!
    Quindi non fare affidamente sui risultati di elaboraProcessi.
    [*] Ovviamente tu non hai due microprocessori, per cui il parallelismo e' "simulato" dalla JVM.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

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.