2013-05-24 14 views
6

Stiamo usando una la seguente classe per mostrare una progress-bar nella nostra applicazione Java: TextProgressBarCome liberarsi di sfarfallio in SWT

Purtroppo stiamo avendo alcuni problemi con sfarfallio quando si utilizza che (Win 7, Java 7) . Hai qualche consiglio su come possiamo evitarlo? Possiamo ridisegnarlo in qualche modo meno frequentemente, usare il doppio buffering o qualcos'altro? Qualsiasi consiglio è molto apprezzato!

+2

Prima di tutto, hai visto la nota nel Javadoc? "Limitazione: Questa classe non è destinata alla sottoclasse dei client." Dovresti assolutamente provare "SWT.DOUBLE_BUFFERED", ma non ci sono garanzie per il tuo caso. –

risposta

4

Innanzitutto, provare a passare SWT.DOUBLE_BUFFERED per il parametro di stile sulla costruzione. Se questo non migliora la situazione, sposta la catena superiore e aggiungi SWT.DOUBLE_BUFFERED alla chiamata del costruttore.

Se non si ha il controllo del genitore, è probabile che sia necessario avvolgere il proprio controllo in un altro Composito con questo flag abilitato.

+0

Grazie, ci ho provato ma sfortunatamente non ha funzionato. Ho provato ad aggiungerlo al costruttore di TextProgressBar e ho anche provato il genitore composito. – Yrlec

+1

Che cosa sta provocando i ridisegni che stai vedendo? Se riesci a identificare un'area in cui viene chiamata troppo spesso, puoi avvolgerla con una chiamata a .setRedraw (false) sul tuo controllo, eseguire il lavoro che causa il rapido ridisegno normalmente, quindi chiamare .setRedraw (true) alla fine. –

-3

è possibile provare a ritardare il tempo con thread.sleep(). Ha funzionato per me quando ho avuto lo stesso problema quando si lavora con jTables

+1

Si prega di notare che sto parlando di SWT. Non swing. – Yrlec

1

provare SWT.NO_BACKGROUND prima, e se non usare SWT.DOUBLE_BUFFERED. Non utilizzare entrambi allo stesso tempo, perché non è necessario. Vedere discussion

1

Disclaimer: So che la domanda si riferisce in particolare allo TextProgressBar. Tuttavia, credo che molti punti di vista di questa domanda non siano limitati a questo widget.

ho avuto un problema con il tremolio del widget Text, che non riuscivo a risolvere né utilizzando lo stile SWT.DOUBLE_BUFFERED né avvolgendolo con l'Composite, né mediante l'applicazione di una qualsiasi combinazione di essi.

Infine, sono stato in grado di risolvere questo problema semplicemente cambiando il tipo di widget da Text a StyledText. Non c'è sfarfallio anche senza lo stile SWT.DOUBLE_BUFFERED e senza il wrapper Composite.

Spero che questo aiuti qualcuno che è stato attratto dal titolo generico di questa domanda.