Changer l'intitulé d'un bouton en Swing - Java - Programmation
MarshPosté le 15-06-2005 à 10:25:59
Bonjour à vous amis forumers, J'aimerais changer un bouton "GO !" en bouton "Stop", j'utilise la méthode setText()mais cela ne marche pas. On m'a dit d'utiliser validate() mais je ne sais pas où (dans ActionPerformed ou dans ajoute0 où j'ai initialisé le bouton "GO !" ). Je vous mets mon code avec en gras l'endroit du problème :
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
// 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) { //JPanel pSouth = new JPanel(); 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);*/
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;
reponse = JOptionPane.showInputDialog(null, choix); label.setText(reponse); JPanel panneau = new JPanel();
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);
// 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);*/
} }
C'est énervant, ce problème qui semble simple me bloque pour la suite et je vous remercie par avance pour aide précieuse
Marsh Posté le 15-06-2005 à 10:25:59
Bonjour à vous amis forumers,
J'aimerais changer un bouton "GO !" en bouton "Stop", j'utilise la méthode setText()mais cela ne marche pas. On m'a dit d'utiliser validate() mais je ne sais pas où (dans ActionPerformed ou dans ajoute0 où j'ai initialisé le bouton "GO !" ). Je vous mets mon code avec en gras l'endroit du problème :
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)
{
//JPanel pSouth = new JPanel();
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;
reponse = JOptionPane.showInputDialog(null, choix);
label.setText(reponse);
JPanel panneau = new JPanel();
choix.addItem("libre" );
choix.addItem("azerty" );
choix.addItem("rectangulaire" );
panneau.add(choix);
//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);*/
}
}
C'est énervant, ce problème qui semble simple me bloque pour la suite et je vous remercie par avance pour aide précieuse