2010-06-18 7 views
1

Je voudrais utiliser un JProgressBar et l'augmenter pour imprimer sa valeur actuelle ainsi que la barre graphique.swing: créer un JProgressBar avec une étiquette superposée?

progress bar

Je devine que la meilleure façon de le faire est de passer outre paintComponent:

@Override protected void paintComponent(Graphics g) { 
// Let component paint first 
    super.paintComponent(g); 
// paint my contents next.... 
} 

mais je ne suis pas sûr ... des conseils?

Répondre

7

Je vous suggère d'utiliser sa propre API:

public void setStringPainted(boolean b) 

Définit la valeur de la propriété stringPainted, qui détermine si la barre de progression devrait rendre une chaîne de progrès. La valeur par défaut est false, ce qui signifie qu'aucune chaîne n'est peinte. Certains aspects peuvent ne pas prendre en charge les chaînes de progression ou ne peuvent les prendre en charge que lorsque la barre de progression est en mode déterminé.

et

public void setString(String s) 

Définit la valeur de la chaîne de progression. Par défaut, cette chaîne est null, ce qui implique le comportement intégré d'utilisation d'une chaîne de pourcentage simple. Si vous avez fourni une chaîne de progression personnalisée et souhaitez revenir au comportement intégré, redéfinissez la chaîne sur null. La chaîne de progression est peinte uniquement si la méthode isStringPainted renvoie la valeur true.

La référence est toujours une bonne chose. :)

Notez que pour activer la modification de la valeur pendant son exécution, vous devez ajouter un ChangeListener à la barre de progression.

+0

doh! J'aurais dû y penser. Merci! –

1

solution de travail basée sur la réponse de Jack:

final JProgressBar pbar = ... 
pbar.setStringPainted(true); 
final NumberFormat nf = NumberFormat.getInstance(); 
nf.setGroupingUsed(true); 
pbar.setString(nf.format(pbar.getValue()));    
pbar.addChangeListener(new ChangeListener() 
{ 
    @Override public void stateChanged(ChangeEvent event) { 
     pbar.setString(nf.format(pbar.getValue()));    
    }   
});