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

Composants Java Discussion :

[JButton] Comment changer l'intitulé


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Par défaut [JButton] Comment changer l'intitulé
    Bonjour à tous,
    je débute dans le Java notamment dans l'utilisation de Swing. J'ai besoin d'un renseignement : comment faire pour changer l'intitulé d'un bouton à chaque clic (dans mon programme: "GO !"/"Stop"). On m'a dit que je devais utiliser setText() dans actionPerformed mais n'arrivant pas à faire apparaitre le bouton "Stop" on m'a dit d'utiliser validate() mais comment quelque soit l'endroit où je le mets (dans ajoute0 ou dans actionperformed )ça ne marche pas ! Il manque quelque chose mais quoi.

    Je vous fourni mon code avec en gras les endroits où le problème se situe.
    J'attends votre aide précieuse avec impatience car ce problème me bloque pour la suite .
    Merci

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.lang.String;

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;

    import java.util.NoSuchElementException;


    class TestCommande extends JFrame implements ActionListener
    {

    JLabel label = new JLabel("Bienvenue: vous pouvez tester les boutons");
    JComboBox choix =new JComboBox();

    // Constructeur de la classe
    TestCommande()
    {
    // Création des panneaux Nord (où sera le clavier virtuel) et Sud (où se trouve le panneau de commande)
    JPanel pNorth = new JPanel();
    JPanel pSouth = new JPanel();

    // Conteneur : contient l'ensemble des composants de l'interface utilisateur
    Container interieur = getContentPane();

    // Contenu des Label pour le panneau Nord : ma photo tient la place du futur clavier virtuel
    ImageIcon photo = new ImageIcon("Hilton.JPG");
    JLabel label2 =new JLabel(photo);
    pNorth.add(label2);
    pNorth.add(new JLabel("C'est ici que se situera le clavier virtuel"));
    ajoute2("Espace vide", pNorth);


    // On divise le panneau Sud en une grille de 2 lignes sur 12 colonnes
    pSouth.setLayout(new GridLayout(2, 12));
    //pSouth.setBorder(BorderFactory.createTitledBorder("Panneau de Commande :"));
    pSouth.setBorder(BorderFactory.createMatteBorder(15, 15, 15, 15, Color.blue));

    // Les boutons et labels (remplissant la grille) du panneau Sud

    ajoute0("GO !", pSouth);



    pSouth.add(new JTextField("Optimiser un clavier",10));
    pSouth.add(new JTextField("35",10));
    pSouth.add(new JTextField("Bigramme",10));
    pSouth.add(new JTextField("Libre",10));
    pSouth.add(new JTextField("100",10));
    pSouth.add(new JTextField("0.1",10));
    pSouth.add(new JTextField("20",10));



    ajoute1("Graphique", pSouth);
    ajoute3("Nbre générations :", pSouth);
    ajoute3("0", pSouth);

    ajoute4("Reset", pSouth);

    ajoute("Mode", pSouth);
    ajoute("Taille min", pSouth);
    ajoute("Eléments", pSouth);
    ajoute("Forme", pSouth);
    ajoute("Population", pSouth);
    ajoute("Mutation", pSouth);
    ajoute("Elitisme", pSouth);

    ajoute3("", pSouth);
    ajoute3("Performance :", pSouth);
    ajoute3("0", pSouth);

    // Ajout des panneaux au conteneur
    interieur.add(pSouth, BorderLayout.CENTER);
    interieur.add(label, BorderLayout.SOUTH);

    interieur.add(pNorth, BorderLayout.NORTH);
    }

    void ajoute(String s, JPanel pSouth)
    {
    // Permet l'utilisation des boutons
    JButton bouton = new JButton(s);
    bouton.setBackground(Color.yellow);

    bouton.setActionCommand(s);
    bouton.addActionListener(this);
    pSouth.add(bouton);

    }
    //Permet l'utilisation du bouton "GO !"
    void ajoute0(String s, JPanel pSouth)
    {

    JButton b = new JButton(s);

    b.setBackground(Color.green);
    //Font f = new Font ("TimesRoman", Font.BOLD, 18) ;

    b.setActionCommand(s);
    b.addActionListener(this);

    pSouth.add(b);
    //pSouth.validate();
    }


    //Permet l'utilisation du bouton "Graphique"
    void ajoute1(String s, JPanel pSouth)
    {
    ImageIcon img = new ImageIcon("gph.jpeg");
    JButton bt = new JButton("Graphique", img);

    bt.setActionCommand(s);
    bt.addActionListener(this);
    pSouth.add(bt);
    }


    void ajoute2(String s, JPanel pNorth)
    {
    JLabel espace = new JLabel(s, JLabel.CENTER);
    pNorth.add(espace);
    }

    //Représentation des label (performance et nbre de générations)
    void ajoute3(String s, JPanel pSouth)
    {
    JLabel espace = new JLabel(s, JLabel.CENTER);
    espace.setBackground(Color.red);
    espace.setOpaque(true);
    pSouth.add(espace);
    }

    //Permet l'utilisation du bouton "Reset"
    void ajoute4(String s, JPanel pSouth)
    {

    JButton reset = new JButton(s);
    reset.setForeground(Color.white);
    reset.setBackground(Color.black);

    reset.setActionCommand(s);
    reset.addActionListener(this);
    pSouth.add(reset);
    }


    // Réponse à l'utilisation des boutons : quel type de fenêtre de dialogue va s'ouvrir après avoir cliqué sur un bouton

    public void actionPerformed(ActionEvent e)
    {

    JButton b = new JButton("GO !");
    String nom = e.getActionCommand();

    if (nom.equals("GO !"))
    {
    /*JOptionPane.showMessageDialog(this, "C'est parti! Vous devez appuyer sur 'Stop' pour modifier les paramètres",
    "Lancement du programme",
    JOptionPane.PLAIN_MESSAGE);*/


    b.setText("Stop");
    b.setBackground(Color.red);
    b.setOpaque(true);

    b.setEnabled(true);
    validate();
    }



    else if (nom.equals("Stop"))
    {
    JOptionPane.showMessageDialog(this, "C'est fini!",
    "Lancement du programme",
    JOptionPane.PLAIN_MESSAGE);

    //JButton b = new JButton("GO !");
    }


    else if (nom.equals("Elitisme"))
    {
    String reponse;

    String message = "20 ";

    reponse = JOptionPane.showInputDialog("Changez le taux d'élitisme : 1/", message);

    label.setText(reponse);



    }


    else if (nom.equals("Mutation"))
    {
    String reponse;

    String message = "0.1";

    reponse = JOptionPane.showInputDialog("Changez le taux de mutation : ", message);

    label.setText(reponse);

    }

    else if (nom.equals("Taille min"))
    {
    String reponse;

    String message = "35";

    reponse = JOptionPane.showInputDialog("Modifiez la taille minimale d'une touche en pixels : ", message);

    label.setText(reponse);

    }


    else if (nom.equals("Eléments"))
    {
    /*boolean ok = false;
    JFileChooser fc = new JFileChooser();
    fc.setDialogTitle("Indiquez le chemin vers le fichier des bigrammes");
    demande du chemin vers le fichier des bigrammes
    while (!ok){
    int returnVal = fc.showOpenDialog(cont);
    try{
    if (returnVal == JFileChooser.APPROVE_OPTION) {
    fichierBigramme = fc.getSelectedFile().getPath();
    ok = true;
    }
    else{
    throw new AnnuleException("erreur fichier bigramme non choisit");
    }
    }catch(AnnuleException ae){
    JOptionPane.showMessageDialog(cont, ae);
    }
    } */


    String reponse;
    String message = "Entrez un nouveau fichier des éléments: ";
    reponse = JOptionPane.showInputDialog(this, message);
    label.setText(reponse);
    }

    else if (nom.equals("Graphique"))
    {
    JOptionPane.showMessageDialog(this,
    "Voici le graphique représentant l'évolution de la population : ",
    "salut",
    JOptionPane.PLAIN_MESSAGE);
    }

    else if (nom.equals("Reset"))
    {
    int reponse = JOptionPane.showConfirmDialog(this,
    "Voulez-vous vraiment relancer le programme en gardant les mêmes paramètres ?",
    "Attention",
    JOptionPane.YES_NO_OPTION);
    if (reponse == JOptionPane.YES_OPTION) label.setText("Nouvelle donne");
    else if (reponse == JOptionPane.NO_OPTION) label.setText("Retour");
    else label.setText("ni l'un ni l'autre ?");
    }

    else if (nom.equals("Forme"))
    {
    //String reponse; /*Avec InputDialog on a une ligne de texte : utile s'il faut importer un fichier forme (autre que les 3 proposés)*/
    //reponse = JOptionPane.showInputDialog(null, choix, "Choisissez la forme du clavier :", JOptionPane.PLAIN_MESSAGE);
    //label.setText(reponse);

    JOptionPane.showMessageDialog(null, choix, "Choisissez la forme du clavier :", JOptionPane.PLAIN_MESSAGE);
    JPanel panneau = new JPanel();


    choix.addItem("libre");
    choix.addItem("azerty");
    choix.addItem("rectangulaire");
    panneau.add(choix);
    /*String laforme;
    choix.getSelectedItem();
    laforme = choix.setSelectedItem();
    JTextField allez = new JTextField(laforme, 10);*/

    //panneau.add(choix);
    //JPanel panneau2 = new JPanel();
    //setLayout(new BorderLayout(15, 15));
    //add(panneau, BorderLayout.CENTER);

    }

    else if (nom.equals("Mode"))
    {
    JOptionPane.showMessageDialog(this, "Optimiser ou Tester ?",
    "salut",
    JOptionPane.PLAIN_MESSAGE);
    }

    else if (nom.equals("Population"))
    {

    String reponse;
    String message = "100";
    reponse = JOptionPane.showInputDialog("Modifiez le nombre d'individus de la population : ", message);
    label.setText(reponse);

    }

    }

    //private void EssaiChoixTest() {




    //JPanel panneau = new JPanel();

    //choix.Item("libre");
    //choix.Item("azerty");
    //choix.Item("rectangulaire");


    //panneau.add(choix);
    //setLayout(new BorderLayout(15, 15));
    //add(panneau, BorderLayout.CENTER);
    //}




    // fonction principale permettant l'affichage de l'interface
    public static void main(String[] argv)
    {
    System.out.println("Chargement en cours...");

    JFrame monCadre = new TestCommande();
    //JFrame monC = new JFrame();

    monCadre.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    monCadre.pack();
    monCadre.setTitle("Clavier et Panneau de contrôle");
    monCadre.setSize(1280, 980);
    monCadre.setVisible(true);


    /*monC.setContentPane(new EssaiChoix());
    monC.pack();
    monC.setTitle("Choississez la forme du clavier : ");
    monC.setSize(300, 200);
    monC.setVisible(true);*/

    }
    }

  2. #2
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Pitié, la balise code !

  3. #3
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    sinon je suis pas sur mais essaie de raffraichir ta frame pour voire, quand tu change de couleur ton bouton et son nom (je suis une quiche en Interfaces graphiques, mais essaies quand meme on sait jamais)

    voila dsl je peux pas t'aider plus.

    mavina

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Bonjour,

    (1) Ce que tu as fait n'est pas très aimable ;-)
    Tu aurais pu mettre les balises "code", et supprimer dans le code publié tout ce qui ne sert pas à montrer le problème.

    (2) Ceci étant dit, j'ai testé ton code chez moi. Il est évident que la transformation du bouton "GO" en bouton "STOP" ne peut pas foncrionner, puisque tu n'appliques pas cette transformation au bouton "GO" affiché mais à un nouveau bouton "GO" que tu crées dans ta procédure, et qui n'est affiché nulle part !

    Concrètement, si tu fais les modif. proposées ci-dessous, cela devrait marcher.

    Nicolas

    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
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
     
    class TestCommande extends JFrame implements ActionListener {
     
        JLabel label = new JLabel("Bienvenue: vous pouvez tester les boutons");
        JComboBox choix =new JComboBox();
        JButton goStopButton; // AJOUT
     
        // Constructeur de la classe
        TestCommande() {
            // [...]
            // Les boutons et labels (remplissant la grille) du panneau Sud
            goStopButton = ajoute0("GO !", pSouth); // MODIF
            // [...]
        }
     
     
       JButton ajoute0(String s, JPanel pSouth) { // MODIF
            JButton b = new JButton(s);
            b.setBackground(Color.green);
            //Font f = new Font ("TimesRoman", Font.BOLD, 1 ;
            b.setActionCommand(s);
            b.addActionListener(this);
            pSouth.add(b);
            //pSouth.validate();
            return b; // AJOUT
        }
     
         public void actionPerformed(ActionEvent e) {
            String nom = e.getActionCommand();
            if (nom.equals("GO !")) {
                goStopButton.setText("Stop");
                goStopButton.revalidate();
                goStopButton.setBackground(Color.red);
                goStopButton.setOpaque(true);
                goStopButton.setEnabled(true);
                goStopButton.revalidate(); // peut-être même pas obligatoire
            }

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Par défaut
    Désoler pour la place prise par le code, j'ai déjà été sur d'autres sites qui le fait (mettre la balise) automatiquement dsl
    Merci, mavina, de ton aide mais étant débutant : qu'entends-tu par rafraîchir la frame ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Par défaut
    Merci infiniment Nicolas_75 ça marche impec !
    et encore dsl pour avoir donné entièrement le code, ça ne se reproduira plus
    Merci !

    Eric

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/06/2012, 12h01
  2. Comment changer l'heure système ?
    Par Lung dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 26/04/2004, 10h24
  3. Comment changer des mots dans un fichier?
    Par ptitbonum dans le forum Linux
    Réponses: 5
    Dernier message: 07/04/2004, 23h42
  4. comment changer d'attribut de fonte dans un Tlabel?
    Par sb dans le forum Composants VCL
    Réponses: 3
    Dernier message: 21/08/2002, 16h53
  5. TextOut : comment changer de font
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 15/07/2002, 20h46

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