View Full Version : [JAVA][NetBeans] Mi spiegate come mai fa così?
Stavo analizzando il codice che genera NB...
Mi sono chiesto... Perchè nel metodo main fa:
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new GraphicX().setVisible(true);
}
});
}
Invece che fare:
public static void main(String args[])
{
new GraphicX().setVisible()
}
?????
Non dovrebbe funzionare uguale?:confused:
VegetaSSJ5
11-06-2008, 19:16
in questo modo crea un thread, ma mi sfugge il motivo per cui fa questo...
marko.fatto
11-06-2008, 19:54
perchè la grafica è pesantuccia da caricare ed è meglio mandarla su un thread a parte :stordita:
VegetaSSJ5
11-06-2008, 20:13
perchè la grafica è pesantuccia da caricare ed è meglio mandarla su un thread a parte :stordita:
non credo cambi qualcosa in termini di pesantezza, e quindi prestazioni, caricare la grafica su un thread o su un processo... :confused:
banryu79
12-06-2008, 08:53
Perchè AWT e Swing *non* sono thread-safe...
Per saperne di più:
1) Thread handling in Swing (http://java.sun.com/developer/JDCTechTips/2005/tt0419.html)
2) Thread safe GUIs (http://www2.sys-con.com/ITSG/virtualcd/java/archives/0605/ford/index.html)
franksisca
12-06-2008, 09:03
edit...
Perchè AWT e Swing *non* sono thread-safe...
Per saperne di più:
1) Thread handling in Swing (http://java.sun.com/developer/JDCTechTips/2005/tt0419.html)
2) Thread safe GUIs (http://www2.sys-con.com/ITSG/virtualcd/java/archives/0605/ford/index.html)
Non ho capito al 100%... ma o capito cosa fa NB.. :D
Thanks!!
perchè la grafica è pesantuccia da caricare ed è meglio mandarla su un thread a parte :stordita:
comunque GraphicX è una classe che ha poco a che fare con la grafica, se non una semplicissima GUI.... ASD era un nome da me assegnato ad una calsse ce doveva calcolare dei punti e visualizzarli......
Perchè AWT e Swing *non* sono thread-safe...
Per saperne di più:
1) Thread handling in Swing (http://java.sun.com/developer/JDCTechTips/2005/tt0419.html)
2) Thread safe GUIs (http://www2.sys-con.com/ITSG/virtualcd/java/archives/0605/ford/index.html)
Mi sono letto gli articoli con piu calma ma ho ancora dei dubbi.. :P
Io ho fatto per il main del progetto di tempo fà questo:
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MiaClasseJFrame().setVisible(true);
}
});
}
L'ho fatto un po' copiando la procedura di NetBeans...
Ora.. Domani ho al discussione del progetto... E non saprei che dire del motivo per cui ho usato un Thread in questo caso....
Suggerimenti? Cosa porta di positivo l'utilizzo di un thread nella creazione di una GUI?
Per quale motivo a vrei dovuto usare un thread? XD
Maledetto io che ho usato un thread.... Mai piu copierò da NB senza sapere ESATTAMENTE perchè fa così e cosa comporta ciò.. :(
Help!
Per come è stato progettato swing, è importante che tutte le operazioni che richiedono interazione con l'interfaccia grafica vengano eseguite nell'EDT (Event Dispatching Thread, l'unico thread con cui swing si aspetta di avere a che fare), incluso la setVisible(). Il main() NON E' eseguito nel thread EDT, per questo si usa invokeLater(), che si assicura che il Runnable che gli viene passato verrà eseguito appena possibile /nell'EDT/.
La possibilità che la chiamata a setVisible() dall'infuori dell'EDT possa causare problemi è minima (in altre parole ti funziona lo stesso se lo invochi direttamente :D), ma per buona programmazione va evitata, appunto tramite SwingUtilities.invokeLater().
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.