Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OPPO Watch X2 Mini, lo smartwatch compatto a cui non manca nulla
OPPO Watch X2 Mini, lo smartwatch compatto a cui non manca nulla
OPPO Watch X2 Mini è uno smartwatch compatto capace di offrire un'esperienza completa di monitoraggio della salute e fitness con una cassa da 43 mm che può adattarsi a qualsiasi tipo di polso, dal più grande al - soprattutto - più piccolo. Con l'architettura dual-chip e un'autonomia che può coprire due giorni con tranquillità, rappresenta la soluzione ideale per chi cerca prestazioni premium in un formato ridotto.
Xiaomi 15T Pro, è lui il nuovo best buy? La recensione
Xiaomi 15T Pro, è lui il nuovo best buy? La recensione
Dopo il recente lancio della serie Xiaomi 15T di Monaco, vi parliamo oggi della versione più performante della nuova famiglia, ovvero Xiaomi 15 T Pro. Vi raccontiamo la nostra prova nel dettaglio, spiegando perché a questo prezzo e in questa fascia, questo smartphone ha davvero senso tenerlo in seria considerazione.
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento
Acer ha ampliato la sua offerta professionale con il TravelMate P6 14 AI, un notebook ultraleggero e robusto pensato per chi lavora in mobilità. Certificato Copilot+ PC, combina design premium, autonomia elevata e piattaforma Intel Core Ultra Serie 2 con funzionalità AI, garantendo sicurezza, affidabilità e produttività per l'utenza business moderna.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-07-2011, 21:38   #1
futu|2e
Senior Member
 
L'Avatar di futu|2e
 
Iscritto dal: Sep 2007
Messaggi: 5545
[JAVA] Uso di SwingUtilities.invokeLater

Ciao, vi illustro la situazione:

Ho una finestra creata in Swing, contenente un pannello vuoto e una voce di
menu in alto dove alla sua pressione si apre il browsing del file system per
selezionare un file (JFileChooser).

Alla selezione del file ho bisogno di agire sul pannello vuoto, disegnando
un oggetto di tipo JTree.

Qui nasce il problema, nel momento in cui io aggiungo l'oggetto JTree al mio
pannello, qual'è la procedura corretta per "ri-disegnare" qualcosa sul mio
frame / finestra?

Girovangando su internet ho scoperto che è possibile, una volta aggiunto
l'oggetto al mio pannello, richiamare il setVisibile direttamente dal frame:

Codice:
pannello.add(jtree);
frame.setVisible(true);
E in effetti funziona, ma ho letto di altri utenti che non erano d'accordo sull'
uso e consigliavano vivamente l'uso del InvokeLater senza bisogno del
setVisibile nuovamente.

Nel mio caso:

Codice:
		SwingUtilities.invokeLater
			(
				new Runnable()
				{
					public void run()
					{
					        pannello.add(jtree);
					}
				}
			);
Ora, se io inserisco questa porzione di codice al posto del semplice "add"
di prima, non fa proprio nulla.

Sapete aiutarmi come si deve agire ogni volta per ri-disegnare qualcosa
su un frame?

Vi ringrazio
__________________
Matthewx

Ultima modifica di futu|2e : 01-07-2011 alle 21:41.
futu|2e è offline   Rispondi citando il messaggio o parte di esso
Old 03-07-2011, 09:55   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Confesso di non aver capito quale è il problema, forse uno spezzone di codice aiuterebbe.

Comunque: SwingUtilities.invokeLater (o EventQueue.invokeLater, è lo stesso) serve ad accodare del codice (il Runnable) nella event queue di swing/awt in modo che venga poi processato in modo asincrono dall'edt (event dispatcher thread) il thread che in Swing/Awt processa tutti gli eventi grafici.

Per "ridisegnare" il componente prova con un repaint e se non bastasse un revalidate
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 03-07-2011, 10:45   #3
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
tutte le operazioni su componenti swing vanno fatte nell'edt, perché siano thread safe, e quindi non nel main.. non a caso tutti gli esempi sul sito di oracle sono fatti in questo modo http://download.oracle.com/javase/tu...orldSwing.java
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2011, 13:13   #4
futu|2e
Senior Member
 
L'Avatar di futu|2e
 
Iscritto dal: Sep 2007
Messaggi: 5545
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Confesso di non aver capito quale è il problema, forse uno spezzone di codice aiuterebbe.
Mi sono spiegato forse con confusione, in pratica: dopo aver creato
e disegnato una finestra contenente pannelli, come fare per disegnarci sopra
in un secondo momento altri oggetti dentro ai pannelli.

Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Per "ridisegnare" il componente prova con un repaint e se non bastasse un revalidate
Che è lo stesso consiglio che ho avuto da altre persone, stasera lo proverò
e vi farò sapere.

Grazie
__________________
Matthewx
futu|2e è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2011, 13:54   #5
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da futu|2e Guarda i messaggi
Mi sono spiegato forse con confusione, in pratica: dopo aver creato
e disegnato una finestra contenente pannelli, come fare per disegnarci sopra
in un secondo momento altri oggetti dentro ai pannelli.
La confusione mi deriva dall'uso che fai della parola "disegnare" in questo contesto: intendi "visualizzare" (della serie: aggiungere/aggiornare nuovi componenti in una finestra visibile) oppure parli proprio di "custom rendering" (hai un component, tipicamente un JPanel o un Canvas, sul quale esegui un tuo rendering personalizzato)?

Nel primo caso si tratta di invocare un aggiornamento del rendering con repaint o revalidate, nel secondo caso è tutta un'altra faccenda.

P.S.: se posti il codice probabilmente si fa prima.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OPPO Watch X2 Mini, lo smartwatch compatto a cui non manca nulla OPPO Watch X2 Mini, lo smartwatch compatto a cui...
Xiaomi 15T Pro, è lui il nuovo best buy? La recensione Xiaomi 15T Pro, è lui il nuovo best buy? ...
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento Acer TravelMate P6 14 AI: il Copilot+ PC sotto i...
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Tesla, le novità sono due: ecco M...
5 kg di oro puro, ecco da dove nasce la ...
Lego Game Boy completamente funzionante,...
Il Premio Nobel per la Fisica 2025 a Cla...
Amkor investirà fino a 7 miliardi...
ARC Raiders gratis? Solo per chi compra ...
Premi fino a 30 mila dollari per chi tro...
Bollette a sorpresa: il prezzo dell'ener...
Apple aggiorna due app con il nuovo desi...
Arriva Qualys Enterprise TruRisk Managem...
Super offerta Amazon: ASUS Vivobook Go 1...
Nuovo MacBook Air M4 a soli 949€ su Amaz...
Roborock R25 Ultra: l'aspirapolvere che ...
Qualcomm compra Arduino e subito si vedo...
HUAWEI WATCH GT 6, prezzo fuori dal comu...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v