JCombobox

Signaler
Messages postés
3
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
18 avril 2011
-
 Utilisateur anonyme -
Bonjour,
J'ai crée un Jpanel dans lequel j'ai inseré un Jcombobox. Je lui ai ensuite associé un itemListenner. Cependant je ne sais pas comment faire pour que lorsque je sélectionne un élement dans mon Jcombobox une certaine autre fenetre s'ouvre. Je serai tentée d'écrire le code suivant menfin... :

class ItemState implements ItemListener{

public void itemStateChanged(ItemEvent e) {
if (e.getItem()= 'Chef du restaurant')
{ fenetreClient fen = new fenetreClient();
}
}
;
}

Merci d'avance

5 réponses


Salut,

Peut-on avoir plus d'informations sur ta classe "fenetreClient" ?
Pour qu'on t'aide à faire quelque chose d'ergonomique, tu peux nous parler un peu plus de ton projet ?

Car si la fenêtre ayant ta JComboBox est la fenêtre la plus importante il faudrait éviter d'en refaire un new (là j'imagine que fen est cette fenêtre).

Sinon, si ta JComboBox donne juste des infos, tu peux créer un objet de type JDialog. C'est moins lourd que les JFrame qui sont des fenêtres entières.


-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
Messages postés
3
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
18 avril 2011

Bonjour,
Je dois développer un logiciel pour gérer un restaurant... En fait dans ma fenetre où j'ai mon JComboBox je demande à l'utilisateur en tant que quoi il veut se connecter (soit en tant que client, chef du restaurant ou employe) et en fonction de sa réponse d'autres fenetres s'ouvrent. S'il choisit de se connecter en tant que client je "fais appel" à la classe "fenetreClient" et une autre fenetre s'ouvre. Mais j'ai trouvé la solution! ^^
J'ai écris ce code :

class ItemState implements ItemListener{

public void itemStateChanged(ItemEvent e) {
int Selection;
Selection =fenetre2.combo.getSelectedIndex(); //fenetre2 est ma fenetre dans laquelle apparait mon Jcombobox que j'ai appelé combo
if (Selection 1) { fenetreMotdepasseChef fen new fenetreMotdepasseChef();
}
else if (Selection == 2) {
fenetreEmploye fen = new fenetreEmploye();
}
else if (Selection == 3) {
fenetreClient fen = new fenetreClient();
}
}



Cependant lorsque je me connecte en tant que Client, 2 fenetres de ma classe "fenetreClient" vont s'ouvrir et je ne vois pas pourquoi...
Mon problème vient il de la déclaration de ma classe ItemState ou alors carrément de la déclaration de la classe "fenetreClient"??

De plus pourrais tu me donner un exemple de JDialog ?

Merci bien

Si deux fenêtres de la classe s'ouvrent, c'est que tu as instancié deux fois un objet de cette classe (deux new).

Peux-tu montrer le code qui est appelé quand tu te "connectes en tant que Client ?"

Pour un exemple de JDialog, cela se manipule comme les JFrame. Je te conseille d'aller faire un saut dans l'API.

public class MaJDialog extends JDialog {

    // tu mets tes attributs

    // un bête constructeur
    public MaJDialog(){

    }

    setContentPane(fond); // fond est un JPanel qui sera mis en fond
    setSize(430,325); // taille
    setLocationRelativeTo(null); // tu centres la fenêtre eu centre de l'écraa
    setResizable(false); // interdiction de redimensionner la fenêtre
    setVisible(true); // tu rends visible ta JDialog

}


-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
Messages postés
3
Date d'inscription
vendredi 15 avril 2011
Statut
Membre
Dernière intervention
18 avril 2011

Merci bien pour l'exemple, j'vais essayer de le mettre en pratique... ^^

Voila le code de ma fenetre client (bon il n'y a pas encore grand chose dedans, je n'ai pas encore vraiment réfléchi à la manière dont j'allai afficher mes différents menus que j'ai enregistré dans ma base de données... ) :

jpackage bouton;
import javax.swing.* ;

public class fenetreClient extends JFrame {

public fenetreClient ()
{ setTitle ("Fenetre Client : affichage des différents menus") ;
setSize (500, 150) ;
setVisible(true);
}
}
Cependant j'ai beau cherché dans toutes mes classes, je ne vois vraiment pas où est mon erreur et pourquoi 2 fenetres s'ouvrent !...
Ce qui est bizarre c'est que j'ai le même souci lorsque je fais appel à ma classe fenetreMotdepasseChef dont voici le code :


package bouton;


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import java.io.*;

public class fenetreMotdepasseChef extends JFrame {


private JPanel container = new JPanel();
private static JPasswordField mdp = new JPasswordField();
private JLabel label = new JLabel("Entrer le mot de passe : ");
private JButton valider = new JButton("Valider");

public fenetreMotdepasseChef(){

this.setTitle("Mot de passe");
this.setSize(500, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);

JPanel top = new JPanel();

container.setBackground(Color.white);
container.setLayout(new BorderLayout());

mdp.setPreferredSize(new Dimension(150, 30));
mdp.setForeground(Color.BLUE);
valider.addActionListener(new Valider());

top.add(label);
top.add(mdp);
top.add(valider);

this.setContentPane(top);
setVisible(true);
}


public JTextField getNom() {
return mdp;
}
public void setNom(JPasswordField nom) {
this.mdp = nom;
}

class Valider implements ActionListener{

public void actionPerformed(ActionEvent e) {
mdp = null;
String mdp= String.valueOf(fenetreMotdepasseChef.mdp);
if("motdepasse".equals(mdp))
{
fenetreChef fen1 = new fenetreChef();
}else {
messagedErreur mes = new messagedErreur();
}

}
}
}

Encore une fois merci ^^

Et ce que tes fenêtres s'ouvrent en même temps ? Ou une plus tard que l'autre ?

Sinon, tu fouilles dans tout ton code tu donnes des numéros biens distincts et différents à chaque fois que tu crées une fenêtre. Ce numéro doit être unique (donc si tu instancies dans des endroits différents plusieurs objets de la même classe, tu mets des numéros non identiques). De cette façon quand tu lanceras ton applciation tu verras quelle fenêtre sera crées et donc quel code de quelle classe sera exécute.

C'est de la mauvaise bricole mais avec le code que tu as donné je ne vois pas. A moins que je sois passé à côté de quelque chose.


-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --