OVH Cloud OVH Cloud

Pression continue JButton

4 réponses
Avatar
Tafanor
Salut tout le monde,

Je cherche à réaliser un composant "PlusMoins" : un JLabel et 2 JButton
"Plus" et "Moins".
Lorsqu'on clique sur un bouton, on (in|dé)crémente de 1 la valeur
affichée par le JLabel.
Je voudrais implanter de même la gestion d'une "pression continue" sur
le JButton qui (in|dé)crémente le JLabel tant que le bouton est préssé.
Imaginons qu'on teste l'état du bouton toutes les 500 millisecondes.

J'aimerais donc savoir comment détecter l'état du JButton, en
particulier s'il est préssé. Je pensais faire quelque chose comme :

JButton bt = new JButton("+") ;
bt.addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
do
{
// Incrémenter la valeur affichée
Thread.sleep(500) ;
}
while(/* bouton enfoncé */) ;
}
}) ;

Il me manque juste le test du while... Si vous avez une idée... Merci

Tafanor

4 réponses

Avatar
TestMan
Question bête : Pourquoi tu utilises pas un JSPinner ?

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JSpinner.html

A+

TM

Tafanor wrote:
Salut tout le monde,

Je cherche à réaliser un composant "PlusMoins" : un JLabel et 2 JButton
"Plus" et "Moins".


Avatar
Tafanor
Je connais cette classe. Le problème c'est qu'on m'impose d'utiliser le
jdk 1.3... Donc pas de JSpinner possible. Ma question est aussi à but
pédagogique : j'aimerais bien savoir réaliser le composant que je vous ai
décrit.

Tafanor

Question bête : Pourquoi tu utilises pas un JSPinner ?

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JSpinner.html

A+



Avatar
oliv
Tafanor wrote:
Je connais cette classe. Le problème c'est qu'on m'impose d'utiliser le
jdk 1.3... Donc pas de JSpinner possible. Ma question est aussi à but
pédagogique : j'aimerais bien savoir réaliser le composant que je vous ai
décrit.


Essayer dans un autre Thread ? qqch comme

private boolean down;

...

b.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent ev) {
down = true;

new Thread(new Runnable() {
public void run() {
do {
System.out.print("*");
// Incrementer la valeur affichee
try {
Thread.sleep(500);
}
catch (InterruptedException ex) {}
}
while(down);
}
}).start();
}

public void mouseReleased(MouseEvent ev) {
down = false;
}
});

--
oliv

Avatar
Phildes
Pour le principe, je peux conseiller de regarder avec E-Anim :
http://www.phildes.com
1 - créer un "bouton-animé" à 3 états
2 - L'état appuyé de ce bouton est une séquence de 500 millisecondes
3 - au bout de ces 500 millisecondes, placer une action "programmée" qui
envoie un message à ton prog Java

Donc, tant que ton bouton sera appuyé, un message sera envoyé en boucle tous
les 500 millisecondees à ton programme.
Ca fonctionne en java 1.1




"Tafanor" a écrit dans le message de
news:3fd0761c$0$7162$
Je connais cette classe. Le problème c'est qu'on m'impose d'utiliser
le

jdk 1.3... Donc pas de JSpinner possible. Ma question est aussi à but
pédagogique : j'aimerais bien savoir réaliser le composant que je vous ai
décrit.

Tafanor

Question bête : Pourquoi tu utilises pas un JSPinner ?

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JSpinner.html

A+