IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Bouton en Java


Sujet :

Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 52
    Par défaut Bouton en Java
    Bonjour à tous,

    Je débute en Java et j'ai un petit problème à résoudre. Sur ma fenêtre je dispose de quatre boutons. Je voudrais lorsque que je clique et que je reste appuyer sur l'un des boutons que le code s'exécute jusqu’à tant que je relache mon bouton et je ne sais pas comment faire donc je vous demande un peu d'aide Merci d'avance à vous tous

  2. #2
    Membre éprouvé Avatar de rabDev
    Homme Profil pro
    Ingénieur développement logiciels, Concepteur et développeur de JMerise
    Inscrit en
    Mars 2011
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels, Concepteur et développeur de JMerise

    Informations forums :
    Inscription : Mars 2011
    Messages : 107
    Par défaut
    Bonjour,
    on peut avoir plus de précisions sur ce code qui va s’exécuter? c'est une boucle ou tu vas lancer carrément une autre application ?

    A+

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 52
    Par défaut
    en faite je vais appelé plusieurs fonction lorsque que je serai entrain d'appuyer sur le bouton

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 966
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 966
    Par défaut
    Joa,

    Un "bouton" n'est pas fait pour ça, son travail est de lancer une fonction.

    Proposition : sur simple [ou double] clic, comme il se doit, ton bouton appellera une fonction (à créer) qui fera ce que tu veux lui faire faire avec ton "appui continu".

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 52
    Par défaut
    Bah le problème c'est que lorsque je dois relâcher mon bouton mes calculs doivent s'arreter :s

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Si tes calculs sont interruptibles facilement tu peux lancer un thread qui sera interromput si le bouton est relaché, (ou qu'il a finit) par exemple. Mais il faut voir si c'est bien interruptible selon ce que tu appelles "calculs".
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Utilise un bouton "bascule" (JToggleButton)
    1) tu cliques une fois -> ça lance le calcul
    2) tu cliques une nouvelle fois -> ça arrête le calcul.

    Comment on fait ?
    à chaque clic, tu examines l'état de ton bouton (isSelected)
    dans l'évènement ItemStateChanged
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        private void btnProductionItemStateChanged(java.awt.event.ItemEvent evt) {                                               
            if (btnProduction.isSelected()) {
                // ... je lance mon calcul
            } else {
                // ... j'arrête mon calcul
            }
        }
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 52
    Par défaut
    et donc btnProduction est de quel type ? Désolé pour toutes ces questions mais je débute tout juste dans le JAVA :s

  9. #9
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Népomucène parlait d'un JToggleButton je pense.

    Moi je pensais simplement à un JButton avec un mousepressed et un mousereleased (pour activer, désactiver le calcul).
    Ça revient au même si ce n'est qu'un des deux boutons tu dois rester le doigts dessus.

    A toi devoir lequel tu préfères.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 52
    Par défaut
    j'ai essayer wax78 de faire comme tu me conseil mais je n'arrive pas l’implanté correctement :s

  11. #11
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    JToggleButton
    oui c'est bien cela

    la solution de @wax78 est plus réactive que la mienne car il est plus rapide de relâcher le doigt de la souris que de re-cliquer.

    Après, si tu as une crampe, alors il faut utiliser un JToggleButton
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 52
    Par défaut
    Le mieux est que je vous mette le code que j'ai écrit pour que cela soit plus simple ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    import java.awt.Color;
    import java.awt.Frame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
     
    import javax.swing.JToggleButton;
     
     
    public class Souris extends Frame {
    	int i=0;
    	JToggleButton btnProduction = new JToggleButton("bouton");
    	Souris(){
    		setTitle("Test");
    		setLayout(null);
    		setBounds(100,100,500,350);
    		setBackground(Color.cyan);
     
    		btnProduction.setBounds(400,100,50,30);
    		btnProduction.setBackground(Color.red);
    		add(btnProduction);
     
     
    		addWindowListener(new FermerFenetre());
    		setVisible(true);
    	}
    	private void btnProductionItemStateChanged(java.awt.event.ItemEvent evt) {                                               
     
    		if (btnProduction.isSelected()) {
    			System.out.println("i"+i);
                i++;            
            } else {
                System.out.println("FINISH");// ... j'arrête mon calcul
            }
        }
    	class FermerFenetre extends WindowAdapter{
    		public void windowClosing(WindowEvent evt){
    			if(evt.getWindow().getName().equals("frame0")){
    					System.exit(0);
    			}else
    				evt.getWindow().dispose();
    		}
    	}
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		new Souris();
    	}
     
     
    }

  13. #13
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Oui en fait tu as oublier "d'accrocher" le listener au bouton.

    Tu peux regarder ce code un peu modifié a cet effet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    package main;
     
    import java.awt.Color;
    import java.awt.Frame;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
     
    import javax.swing.JToggleButton;
     
    public class Souris extends Frame
    {
    	int				i				= 0;
    	JToggleButton	btnProduction	= new JToggleButton("bouton");
     
    	Souris()
    	{
    		setTitle("Test");
    		setLayout(null);
    		setBounds(100, 100, 500, 350);
    		setBackground(Color.cyan);
     
    		btnProduction.addItemListener(new ItemListener()
    		{
     
    			@Override
    			public void itemStateChanged(ItemEvent e)
    			{
    				if (btnProduction.isSelected())
    				{
    					System.out.println("i" + i);
    					i++;
    				} else
    				{
    					System.out.println("FINISH");// ... j'arrête mon calcul
    				}
    			}
     
    		});
     
    		btnProduction.setBounds(400, 100, 50, 30);
    		btnProduction.setBackground(Color.red);
    		add(btnProduction);
     
    		addWindowListener(new FermerFenetre());
    		setVisible(true);
    	}
     
    	class FermerFenetre extends WindowAdapter
    	{
    		public void windowClosing(WindowEvent evt)
    		{
    			if (evt.getWindow().getName().equals("frame0"))
    			{
    				System.exit(0);
    			} else
    				evt.getWindow().dispose();
    		}
    	}
     
    	public static void main(String[] args)
    	{
    		// TODO Auto-generated method stub
    		new Souris();
    	}
     
    }
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 52
    Par défaut
    Merci pour ton aide wax78 mais ce code ne fait pas vraiment ce que je demande car si je clique une premiere fois il affiche i0 et apres si je reclique et il m'affiche FINISH alors ce que je voudrais est que lorsque je clique il imcrémente mon i et lorsque je reclique il m'affiche finish :s

  15. #15
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Ah ben là, je pense que tu ne peux pas faire l'économie du Thread
    (et avec la hausse du prix, ça devient cher ...)

    sérieusement, tu voudrais que tant que le bouton est cliqué, il incrémente le i c'est bien cela ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  16. #16
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Mais en plus tu ne nous a pas vraiment dit ce que ton code de calcul faisait et comment il était construit. Cela aiderait.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 52
    Par défaut
    oui Népomucène c'est cela tu as comprit ce que je voulais.

    Et bah je dois calculer un deltaV(une petite vitesse) afin de pouvoir calculer un distance et cette distance est envoyé à une fonction qui recalcul une autre distance elle est stocké dans un tableau voir pour faire simple ...

  18. #18
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Est-ce que le bouton fait office de chronomètre ?
    1er clic : départ
    2ème clic : arrivée (et donc calcul du temps ?)
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  19. #19
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 52
    Par défaut
    non non le deltaV est une valeur connu qui s'ajoute à elle meme a chaque tour de boucle voila le bout de code que j'execute pour le moment en effectuant un clique à chaque fois pour avoir une nouvelle valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class Bouton3Listener implements ActionListener{
    		public void actionPerformed(ActionEvent e){
     
     
    			dv=dv+deltaV();
    			D=dv/200;			
    			Ye=Ye+D;
    			System.out.println("Dv= "+dv);
    			System.out.println("D= "+D);
    			X1=calculX1(Xe,Ye);
    			X2=calculX2(Xe,Ye);
    			System.out.println(""+X1);
    			System.out.println(""+X2);
    			label2.setText("Ye= "+Ye);
     
     
    		}
    et la fonction deltaV
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public double deltaV(){
    		int Acc =60;
    		int TempsAcc;
    		int VitesseMax=1200;
    		int DistAcc;
    		float deltaV;
     
    		TempsAcc=VitesseMax/Acc;
    		DistAcc=(VitesseMax*TempsAcc)/2;
    		deltaV=(float)VitesseMax/(200*(float)TempsAcc);
    		return (double)deltaV;
    	}

  20. #20
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    s'ajoute à elle meme a chaque tour de boucle
    Avant, ton addition se faisait à chaque clic.

    Maintenant, si tu ajoutes en continu, alors tu as un problème de rythme d'addition :
    si l'addition s'exécute tous les centièmes de secondes, tu auras un résultat supérieur à celui que tu aurais si l'addition s'exécute tous les dixièmes de secondes.

    Comment vas définir le rythme ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Créer des boutons en java
    Par nattyseydi dans le forum Débuter
    Réponses: 13
    Dernier message: 12/05/2009, 12h12
  2. comment simuler un clic sur un bouton en java
    Par kohan95 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 28/03/2009, 13h31
  3. mouvement d'un bouton en java
    Par haifa28 dans le forum Composants
    Réponses: 5
    Dernier message: 20/09/2008, 09h03
  4. Communication bouton/code java
    Par Grimly_old dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 10/04/2008, 15h58
  5. Fenetre et Bouton en java
    Par babylone_59 dans le forum AWT/Swing
    Réponses: 18
    Dernier message: 06/03/2008, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo