Problem Listener JComboBox
zem_moh
Messages postés
10
Statut
Membre
-
zem_moh Messages postés 10 Statut Membre -
zem_moh Messages postés 10 Statut Membre -
Bonjour,
Je veux créer une interface swing qui contient deux combobox combo1 et combo2
Combo1 : contient un événement even1 qui s’exécute après chaque changement de l’élément sélectionne.
Combo2 : contient un événement even2 qui change l’élément affiche de combo1 sans exécute l’even1.
Donc j’ai pensé d’ajouter :
1- Un MouseListener à combo1 qui contient even1 mais le problème que l’événement ne s’exécute pas qu’après un autre clic sur l’élément choisi (c.-à-d. le faite de choisir un élément avec le sourie n’entraine pas que even1 sera exécuter).
2- Un ActionListener à combo1 qui contient even1 mais le problème que l’événement even1 s’exécute aussi après changement provienne de l’even2 de combo2.
Merci d'avance.
Cordialement
Je veux créer une interface swing qui contient deux combobox combo1 et combo2
Combo1 : contient un événement even1 qui s’exécute après chaque changement de l’élément sélectionne.
Combo2 : contient un événement even2 qui change l’élément affiche de combo1 sans exécute l’even1.
Donc j’ai pensé d’ajouter :
1- Un MouseListener à combo1 qui contient even1 mais le problème que l’événement ne s’exécute pas qu’après un autre clic sur l’élément choisi (c.-à-d. le faite de choisir un élément avec le sourie n’entraine pas que even1 sera exécuter).
2- Un ActionListener à combo1 qui contient even1 mais le problème que l’événement even1 s’exécute aussi après changement provienne de l’even2 de combo2.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class EssaiChoix extends JPanel implements ItemListener {
JComboBox combo1 = new JComboBox();
JComboBox combo2 = new JComboBox();
Ardoise ardoise = new Ardoise();
EssaiChoix() {
JPanel panneau = new JPanel();
combo1.addItem("noir");
combo1.addItem("rouge");
combo1.addItem("vert");
combo1.addItem("bleu");
combo1.addItem("jaune");
combo1.setToolTipText("combo1");
combo2.addItem("1");
combo2.addItem("2");
combo2.addItem("3");
combo2.addItem("4");
combo2.addItem("5");
combo2.setToolTipText("combo2");
panneau.add(combo1);
panneau.add(combo2);
combo1.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
ardoise.setForeground(getCouleur((String) combo1
.getSelectedItem()));
}
});
combo2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
combo1.setSelectedIndex(combo2.getSelectedIndex());
}
});
setLayout(new BorderLayout(5, 5));
add(panneau, BorderLayout.NORTH);
add(panneau, BorderLayout.EAST);
add(ardoise, BorderLayout.CENTER);
}
public void itemStateChanged(ItemEvent evt) {
ardoise.setForeground(getCouleur((String) combo1.getSelectedItem()));
}
Color getCouleur(String s) {
if (s.equals("noir"))
return Color.black;
else if (s.equals("rouge"))
return Color.red;
else if (s.equals("vert"))
return Color.green;
else if (s.equals("bleu"))
return Color.blue;
else if (s.equals("jaune"))
return Color.yellow;
return Color.black;
}
public static void main(String[] argv) {
JFrame monCadre = new JFrame();
monCadre.setContentPane(new EssaiChoix());
monCadre.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
monCadre.pack();
monCadre.setVisible(true);
}
}
class Ardoise extends JPanel {
Ardoise() {
setPreferredSize(new Dimension(100, 100));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawOval(10, 10, 80, 80);
}
}
Merci d'avance.
Cordialement
A voir également:
- Problem Listener JComboBox
- Échec du démarrage de la session « cloud files diagnostic event listener » avec l’erreur suivante : 0xc0000022 - Forum Logiciels
- Msg erreur et blue screen sur acer nitro - Windows 11
- Taille d'une JComboBox() ✓ - Forum Java
- Problème uplay_r1_loader.dll et 0xc0000022 ✓ - Forum Jeux PC
- Problème Explorer.exe (0xc0000022) ✓ - Forum Windows
2 réponses
Bonjour,
tu veux juste afficher le nom de la couleur dans comb1 lorsque tu cliques sur ton choix dans comb2, et sans appliquer la couleur sur l'objet Ardoise. :(
benh, voici se bout de code, tu peux l'essayer et compare ton travail avec le mien
tu veux juste afficher le nom de la couleur dans comb1 lorsque tu cliques sur ton choix dans comb2, et sans appliquer la couleur sur l'objet Ardoise. :(
benh, voici se bout de code, tu peux l'essayer et compare ton travail avec le mien
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class EssaiChoix extends JPanel implements ItemListener {
JComboBox combo1 = new JComboBox();
JComboBox combo2 = new JComboBox();
Ardoise ardoise = new Ardoise();
EssaiChoix() {
JPanel panneau = new JPanel();
combo1.addItem("noir");
combo1.addItem("rouge");
combo1.addItem("vert");
combo1.addItem("bleu");
combo1.addItem("jaune");
combo1.setToolTipText("combo1");
combo2.addItem("1");
combo2.addItem("2");
combo2.addItem("3");
combo2.addItem("4");
combo2.addItem("5");
combo2.setToolTipText("combo2");
panneau.add(combo1);
panneau.add(combo2);
combo1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ardoise.setForeground(getCouleur((String) combo1
.getSelectedItem()));
}
});
combo2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
combo1.setSelectedIndex(combo2.getSelectedIndex());
}
});
setLayout(new BorderLayout(5, 5));
add(panneau, BorderLayout.NORTH);
add(panneau, BorderLayout.EAST);
add(ardoise, BorderLayout.CENTER);
}
public void itemStateChanged(ItemEvent evt) {
ardoise.setForeground(getCouleur((String) combo1.getSelectedItem()));
}
Color getCouleur(String s) {
if (s.equals("noir"))
return Color.black;
else if (s.equals("rouge"))
return Color.red;
else if (s.equals("vert"))
return Color.green;
else if (s.equals("bleu"))
return Color.blue;
else if (s.equals("jaune"))
return Color.yellow;
return Color.black;
}
public static void main(String[] argv) {
JFrame monCadre = new JFrame();
monCadre.setTitle("Ardoise");
monCadre.setContentPane(new EssaiChoix());
monCadre.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
monCadre.pack();
monCadre.setVisible(true);
}
}
class Ardoise extends JPanel {
Ardoise() {
setPreferredSize(new Dimension(100, 100));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillOval(10, 10, 130, 80);
}
}