n° 219
Novembre 2017
Dicembre 11, 2017, 06:45:44 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: swing non é thread-safe?  (Letto 914 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
starsinger2000
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 19


Mostra profilo E-mail
« inserita:: Aprile 05, 2017, 07:59:38 »

Ciao a tutti
Sto cercando di creare un gestionale usando java swing.
Quello che vorrei sapere è:
cosa significa che Swing non è thread-safe, che problemi potrei avere?
Quando io creo il frame principale, quello che conterrà i diversi panel e i vari component, è bene che io la creo usando il seguente codice:
EventQueue.invokeLater(new Runnable(){
   public void run(){   
      MainWindow mainWindow = new MainWindow();
   }
});
ora se io nel mio Jframe, il mainwindow, avessi dei campi JLabel, JTextField o JButton, ogni volta che vado a fare una variazione, attivare un JButton o colorare una JLabel al passaggio del mouse, o un qualsiasi effetto grafico che si attiva all’attivarsi di determinati eventi, devo nuovamente usare un’istanza della classe EventQueue? tipo in questo modo:
qui ho un pulsante OK che viene premuto.
buttonOK.addMouseListener(new MouseAdapter() {
   @Override
   public void mouseClicked(MouseEvent arg0) {
      EventQueue.invokeAndWait(new Runnable(){ // oppure .invokeLater
         public void run(){   
            /* reset di un JTextField  textFieldCodice */
            setTextField(textFieldCodice, " ");
         }
      });
   }
});
ho capito bene, oppure non è così?
Grazie
ciao

p.s. Scusate, non é il forum dedicato lo so, ma lo chiedo lo stesso, se io usassi per creare questo gestionale il pacchetto .net della microsoft, visto che poi il gestionale dovrá girare su computer con windows andrei incontro agli stessi problemi?
Ancora grazie
Registrato
Guly
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 30


Mostra profilo
« Risposta #1 inserita:: Luglio 21, 2017, 09:34:26 »

E' corretto quello che dici all'inizio. Cioè la creazione del frame la demandi all' Event Dispatch Thread (EDT). Per quanto riguarda gli eventi generati invece, vengono automaticamente assegnati all'EDT quindi non serve "invokeLater".
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines