Sapete spiegarmi l'utilità dei JPanel double buffered?
grazie!![]()
Sapete spiegarmi l'utilità dei JPanel double buffered?
grazie!![]()
up
non ho mai approfondito più che tanto comunque, che io sappia/ricordi, qualsiasi JPanel è di default double buffered (a meno che non dici tu altrimenti nel costruttore).
Il fatto che un componente che va mostrare elementi grafici sia double buffered poi dovrebbe migliorarne le prestazioni - ovvero tutto quanto deve essere (ri)disegnato nella finestra viene "creato" in un "posto x" diverso da quanto visibile e poi mostrato nel componente. Dov'è il vantaggio? Si evitano artefatti tipo sfarfallamenti, immagini che si creano un pezzo alla volta etc che senza double buffer invece si avrebbero.
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
ho fatto la domanda proprio perchè girando su internet ho trovato in un sorgente qualcosa del tipo: JPanel blabla = new JPanel(true) // per creare un JPanel doubleBuffered
premetto che non ricordo benissimo comunque il commento era quello, quindi mi sa che non sono di default double buffered...
Dalla documentazione di JPanel:
Quindi di default JPanel è double buffered.JPanel():
Creates a new JPanel with a double buffer and a flow layout.
JPanel(LayoutManager lm):
Create a new buffered JPanel with the specified layout manager
L'unico dubbio può venire leggendo la descrizione del costruttore che accetta un LayoutManager: la descrizione dice "buffered" e non "double buffered", ma andando a spulciare il sorgente si nota che...
... viene richiamato il costruttore con due parametri, specificando true per il double buffering.codice:public JPanel(LayoutManager layout) { this(layout, true); }
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
ah ok quindi new JPanel(true) è esattamente identico a new JPanel?
Sì. Diciamo che specificando l'argomento si ha una chiamata in meno sullo stack:Originariamente inviato da John360
ah ok quindi new JPanel(true) è esattamente identico a new JPanel?
Ciao.codice:new JPanel() | +-- new JPanel( true ); | +-- new JPanel(new FlowLayout(), true)![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Grazie![]()