futu|2e
01-07-2011, 21:38
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:
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:
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 :)
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:
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:
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 :)