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 :

Problème avec JCombobox


Sujet :

Composants Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Problème avec JCombobox
    Bonjour,

    Je dois faire un projet de circuit de voitures qui consiste à appliquer différentes stratégies à une voiture pour qu'elle puisse finir la course.

    Ayant fini cela, je me suis lancé dans l'interface graphique Swing. Mon but étant de créer une interface qui utilise 2 JCombobox, une pour choisir le circuit et l'autre pour choisir la stratégie à appliquer.

    J'ai fait beaucoup de recherches sur le net mais je ne vois pas du tout comment faire pour appliquer une stratégie sur un circuit. Peut-être avec un ActionListener ? Mais je ne suis vraiment pas sûr...

    Si vous avez d'autres idées autre qu'une JCombobox, peut-être avec des boutons, je suis preneur.

    J'espère avoir été suffisamment clair.

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonjour,

    l'idée du JComboBox me semble bien, il faut que tu initialises ta JComboBox stratégie avec un setEnabled(false). Puis avec un ItemListener sur la première (celle des circuit), quand tu changes d'item dans le circuit tu mets à jour ou tu rends utilisable la JComboBox des stratégies. Ainsi l'utilisateur voit qu'il y a une stratégie à choisir mais qu'il faut qu'il choisisse un circuit avant.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre réponse , j'ai fais comme vous avez dit , ça marche très bien .. Mon problème maintenant c'est que quand je sélectionne un circuit dans mon combobox , je voudrais que le circuit s'affiche dans le Jpanel .. Je vois pas trop comment faire .. Je dois utiliser un actionlistener ?
    Merci

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Dans l'itemListener quand tu choisis ton circuit, tu passes ta deuxième comboBox disponible, en même du temps tu passes le nom dans un JLabel afficheCircuit, pour cela il faut que ton JPanel ai un JLabel .

    Ainsi dans le listener tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JLabel.setText(JComboBox.getSelectedItem());
     // je ne sais plus le nom exact de la fonction mais c proche de sa
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je n'ai pas très bien compris ce que vous avez dit mais j'ai fais autrement et j'ai réussi à afficher le circuit dans le JPANEL !!!!

    voici le code

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    package li260.game;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
     
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
        	public class Fenetre extends JFrame {
     
     
        		private BufferedImage buffImg;
        		private File f;
     
                private JPanel container = new JPanel();
                private JComboBox combo = new JComboBox();
                private JLabel label = new JLabel("Circuit");
                private JComboBox combostrategie = new JComboBox();
                private JLabel labelstrategie= new JLabel ("Strategie");
     
                public Fenetre(){
     
     
                this.setTitle("Course de Voiture");
                this.setSize(768, 1024);
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                this.setLocationRelativeTo(null);
     
     
                //Combobox pour Circuit
                combo.setPreferredSize(new Dimension(100,20));
                combo.addItem("Circuit 1");
                combo.addItem("Circuit 2");
                combo.addItem("Circuit 3");
                combo.addItem("Circuit 4");
     
                //Combobox pour Stratégie
                combostrategie.setPreferredSize(new Dimension(100,20));
                combostrategie.addItem("Strategie radar Classique");
                combostrategie.addItem("Strategie radar Dijkstra");
                combostrategie.addItem("Strategie radar point point");
     
                //Combobox Stratégie désactivé
                combostrategie.setEnabled(false);
     
     
     
                combo.addItemListener(new ItemState());
                combo.addActionListener(new SelecImage());
     
     
     
                JPanel top = new JPanel();
                top.add(label);
                top.add(combo);
                top.add(labelstrategie);
                top.add(combostrategie);
     
     
                container.add(top, BorderLayout.EAST);
                this.setContentPane(container);
                this.setVisible(true);            
                }
     
                class ItemState implements ItemListener{
     
                    public void itemStateChanged(ItemEvent e) {
                           combostrategie.setEnabled(true);
                    }               
            }
     
              class SelecImage implements ActionListener{	
            		public void actionPerformed(ActionEvent e) {		
     
            			String typeIMG = (String) combo.getSelectedItem();
            			if (typeIMG.equals("Circuit 1")){
     
            				f = new File("src/li260/image/1_safe.png");							
            				try {
            					buffImg = ImageIO.read(f);
            					label.setIcon(new ImageIcon(buffImg));
     
            					label.revalidate();
     
            				}catch (IOException e2) {
            					e2.printStackTrace();
            				}	
            			}
            		}
            	}
     
        }
    Ce que je voudrais faire maintenant c'est appliquer la stratégie à ce circuit sachant que j'ai déjà le main de chaque stratégie .. Mon idée était de créer un actionlistener , qui va , dès qu'une stratégie est cliqué , ouvrir le test main et l'appliquer au circuit .. Mais je vois vraiment pas comment faire ..

  6. #6
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Excuse moi mais la j'ai du mal à te suivre je reprend :

    1/ l'utilisateur choisi un circuit
    2/ l'utilisateur choisi une stratégie

    tu en es la maintenant ( de toute façon la réaction au choix de la stratégie c'est encore un ItemListener sur la JComboBox de la strategie)

    mais pour te suivre dans tes règles.

    3/ il se passe quoi?
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Finalement j'ai réussi , le seul problème c'est que quand je clique sur le jcombobox des stratégies , ça lance la simulation sauf que la simulation se lance dans une autre fenêtre .. Je voudrais que ça se lance sur le même Jpanel ..
    Voici l'actionListener que j'ai crée
    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
        class SelecStrategy implements ActionListener{	
          		public void actionPerformed(ActionEvent e) {
     
          			String selecircuit = (String) combostrategie.getSelectedItem(); //Selection du circuit
          			String strat = (String) combostrategie.getSelectedItem(); // Selection de la stratégie
          			StrategyInterfaceClassique sic= new StrategyInterfaceClassique();
     
     
          			if (strat.equals("Strategie Radar Classique")){
          				try {
    						sic.ExecuterRadarClassique();
    					} catch (VoitureException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					} catch (IOException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					}
     
          			}
          		}
     
          		}



    Voici la méthode qu'il l'exécute :
    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
     
     
     
     
     
    public class StrategyInterfaceClassique {
     
    	public void ExecuterRadarClassique() throws VoitureException, IOException {
    		String namefile = "1_safe";
    		String file_trk = "src/li260/track/"+namefile+".trk";
     
     
    		CircuitFactory cfac = new CircuitFactory(file_trk);
    		Circuit track = cfac.build();
     
    		VoitureFactory vFac = new FerraryFactory(track);
    		Voiture v = vFac.build();
     
    		BufferedImage im = Tools.imageFromCircuit(track);
    		double[] thetas = {0., - Math.PI/3., -Math.PI/4., Math.PI/3., Math.PI/4., Math.PI/6, -Math.PI/6, Math.PI/2, -Math.PI/2};
    		Commande[] allCom = {new Commande(0.1,0.), 
    					new Commande(0.1,-1), 
    					new Commande(0.5,-0.5), 
    					new Commande(0.1,1),
    					new Commande(0.5,0.5),
    					new Commande(0.7,0.8),
    					new Commande(0.7,-0.8),
    					new Commande (-0.7,1),
    					new Commande (-0.7,-1)}; 
     
     
    		Radar rd = new RadarClassique(thetas,v,track);
    		Strategy st = new StrategyRadar(thetas,allCom,v,rd);
     
    		//Création de la simulation
    		Simulation simu = new Simulation(track,v,st);
     
     
    		JFrame fen = new JFrame();	
    		IHMSwing ihm = new IHMSwing();	
     
     
    		ihm.add(new  CircuitObserveur(track));	
    		ihm.add(new  TrajectoireObserveur(simu));
     
    		simu.add(ihm); 	
     
    		fen.setTitle("Simulation Lancée");
    		ihm.setPreferredSize(new Dimension(1024, 1024));	
    		fen.setContentPane(ihm);	
    		fen.setVisible(true);	
    		fen.pack();	
    		simu.play();
     
     
    	}
    }

Discussions similaires

  1. Problème avec JComboBox
    Par Invité dans le forum Composants
    Réponses: 2
    Dernier message: 11/02/2009, 23h48
  2. Problème avec JComboBox
    Par muslim1987 dans le forum Débuter
    Réponses: 2
    Dernier message: 30/06/2008, 16h22
  3. problème avec jcombobox
    Par minooo dans le forum Composants
    Réponses: 2
    Dernier message: 15/01/2008, 12h20
  4. problème avec JComboBox
    Par ulysse031 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 29/12/2007, 00h01
  5. problème avec JComboBox
    Par ulysse031 dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 22/04/2007, 16h51

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