Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347

    Utilità JPanel doubleBuffered?

    Sapete spiegarmi l'utilità dei JPanel double buffered?
    grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    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"

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    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...

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Dalla documentazione di JPanel:

    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
    Quindi di default JPanel è double buffered.

    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...

    codice:
    public JPanel(LayoutManager layout) {
        this(layout, true);
    }
    ... viene richiamato il costruttore con due parametri, specificando true per il double buffering.

    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

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    ah ok quindi new JPanel(true) è esattamente identico a new JPanel?

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da John360
    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:

    codice:
    new JPanel()
    |
    +-- new JPanel( true );
        |
        +-- new JPanel(new FlowLayout(), 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

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.