Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    75

    [JAVA SWING] Come ottenere il riferimento alla GUI una volta inizializzata?

    Buongiorno,
    come da titolo avrei bisogno di ottenere il riferimento alla GUI inizializzata nel main per potervi interagire da codice e non da utente.
    Ad esempio se io faccio:
    codice:
    public class TestPrincipalFrame 
    {
    	public static void main(String[] args) 
    	{
    		Runnable init = new Runnable() {
    			
    			@Override
    			public void run() {
    				// TODO Auto-generated method stub
    				{
    					PrincipalFrame frame = new PrincipalFrame();
                                    }
    			}
    		};
    		
    		SwingUtilities.invokeLater(init);
    	}	
    }


    Poi se nel main volessi continuare ad interagire con la GUI che viene lanciata con Principalframe() come faccio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    come per ogni oggetto devi tenerti da qualche parte un riferimento alla variabile.
    In dettaglio se tu fai dentro il run

    codice:
    @Override
    			public void run() {
    				// TODO Auto-generated method stub
    				{
    					PrincipalFrame frame = new PrincipalFrame();
                                    }
    			}
    quella è una variabile locale, non hai idea di frame all'esterno.
    Cambia lo scope della variabile e su quella poi agisci.

    Con frame, non so se ti è già stato detto, occhio ai thread: aggiornamenti grafici (quelli che pertengono ad una JFrame) devono essere fatti dall'EDT!
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    75
    Originariamente inviato da valia
    come per ogni oggetto devi tenerti da qualche parte un riferimento alla variabile.
    In dettaglio se tu fai dentro il run

    codice:
    @Override
    			public void run() {
    				// TODO Auto-generated method stub
    				{
    					PrincipalFrame frame = new PrincipalFrame();
                                    }
    			}
    quella è una variabile locale, non hai idea di frame all'esterno.
    Cambia lo scope della variabile e su quella poi agisci.

    Con frame, non so se ti è già stato detto, occhio ai thread: aggiornamenti grafici (quelli che pertengono ad una JFrame) devono essere fatti dall'EDT!
    Okay, quello che dici ho capito, il problema è che ho fatto già le prove di spostare lo scope della variabile frame ma non va bene. e quindi o non faccio inizializzare la GUI dall'EDT, ma poi non funziona bene, oppure devo lasciare cosi com'è e trovare un modo per avere anche fuori il riferimento al frame creato dall'EDT. Qualcuno sa se è possibile?

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da gatsu85
    trovare un modo per avere anche fuori il riferimento al frame creato dall'EDT. Qualcuno sa se è possibile?
    Volendo potresti usare il metodo statico getWindows() della classe java.awt.Window per ottenere una lista di TUTTE le finestre aperte dall'applicazione. Se poi hai una finestra sola.. tanto meglio
    http://docs.oracle.com/javase/6/docs...l#getWindows()
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.