Forum Programmation.java [Swing] Rendre une JProgressBar cliquable comme un JButton

Posté par  . Licence CC By‑SA.
Étiquettes :
0
1
jan.
2014

Bonjour et bonne année 2014!

Là je suis en train de bosser sur un vieux projet en Java, un clone de «Plantes contre Zombies» mais en beaucoup plus moche et avec beaucoup moins de trucs. :p

Du coup j’aimerais bien reproduire les boutons des plantes. Ça fonctionne comme une barre de progression (pendant le temps de rechargement de la plante) et quand la barre de progression est remplie on peut à nouveau utiliser la plante (si on a assez de monnaie).

Du coup j’utilisais un JButton que je désactivais quand on avait pas assez d’argent et inversement. Ensuite j’ai changé pour des JProgressBar, mais du coup il faut se retaper plein de trucs à la main. Avec le JButton j’utilisais la méthode addActionListener qui n’était pas actionné quand l’élément était désactivé, alors qu’avec les JProgressBar je ne peux utiliser que addMouseListener qui est tout le temps actionné, j’ai l’impression que le fait que la barre soit grisée ou non ne change pas son apparence.

Sinon j’ai essayé de mettre une JProgressBar dans un JButton mais il ne prend pas toute la place et du coup la barre est miniscule! J’ai aussi pensé à implémenter une certaine interface tout en héritant de JProgressBar mais j’ai rien trouvé de concluant. Mes recherches sur le web n’ont rien donné. Du coup je pensais faire deux éléments distincts.

Bref, selon vous, quelle est la meilleure solution?

Merci d’avance.

  • # c'est pas fait pour mais bon ...

    Posté par  . Évalué à 1.

    Une progress bar c'est pas fais pour ça mais bon…

    Tu peux toujours t'en sortir avec un MouseListener en implementant la methode mouseClicked(MouseEvent e) avec dedans un gros

    if( maProgressbar.isEnabled() ){ /*ton traitement*/}_ 
    

    Au lieu d'un mouseListener tu peux utiliser un mouseAdapter qui implemente déjà toute les methodes à implementer en ne faisant rien c'est juste pour plus de facilité et de lisibilité comme ça tu n'aura qu'a surcharger uniquement les méthode qui t'intéresse (dans ton cas mouseClicked(MouseEvent e) ).

    Bref rien de bien compliqué mais c'est pas ce qu'il y a de plus beau…

    • [^] # Re: c'est pas fait pour mais bon ...

      Posté par  . Évalué à 2.

      En fait le problème en faisant cela c’est qu’il va falloir que je me tape le changement de couleur de fond de la barre de progression à chaque fois, mais c’est sans doute ce que je vais faire si je ne trouve pas mieux…

      Écrit en Bépo selon l’orthographe de 1990

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.