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 :

Forcer Ouverture JCombobox


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 30
    Points : 16
    Points
    16
    Par défaut Forcer Ouverture JCombobox
    Bonjour,

    Dans le cadre de mon projet, j'utilise cette classe (ci-après)
    Il s'agit d'une Combobox qui contient des CheckBoxes, pour permettre le choix
    Multiple. Elle fonctionne, mais se referme à chaque selection (check) d'un item.

    Donc, à partir de cette classe : auriez vous une solution pour que la combo ne se referme pas à chaque selection ?

    j'ai essayé le combo.showPopup() à la fin du listener mais rien n'y fait

    Cordialement
    Hoook

    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
    106
    107
    108
    109
    110
    111
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.List;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
     
    import javax.swing.JCheckBox;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.ListCellRenderer;
     
    //Class ClassCombo !!! qui peux être écoutée !
    public class CheckCombo implements ActionListener  
    {
    	private CheckComboStore store ;
    	public static ArrayList<String> listCheck = new ArrayList<String>();
     
    	 private String[] ids;
    	 private Boolean[] values;
     
    	 public CheckCombo(String[] ids, Boolean[] values)
    	 {
    	         this.ids = ids;
    	         this.values = values;
    	         listCheck = new ArrayList<String> () ;
    	 }
     
    	 // Permet de Checker/déchecker pd le click !!
         public void actionPerformed(ActionEvent e)  
         {  
             JComboBox cb = (JComboBox)e.getSource();  
             store = (CheckComboStore)cb.getSelectedItem();  
             CheckComboRenderer ccr = (CheckComboRenderer)cb.getRenderer();  
             ccr.checkBox.setSelected((store.state = !store.state));
             if( store.state.toString() == "true")
             	listCheck.add(store.id) ;
             else
            	 listCheck.remove(store.id) ;
         } 
     
         // crée la liste avec les données en paramêtres !
         public JPanel getContent()  
         {  
             CheckComboStore[] stores = new CheckComboStore[ids.length];  
             for(int j = 0; j < ids.length; j++)  
                 stores[j] = new CheckComboStore(ids[j], values[j]);
     
             JComboBox combo = new JComboBox(stores);  
             combo.setRenderer(new CheckComboRenderer());  
             combo.addActionListener(this);
     
            // Crée un panel contenant la bobox qui sera retourné a la JFrame !
             JPanel panel = new JPanel();
             panel.add(combo);  
             return panel;  
         }
         public CheckComboStore[] getStore()  
         {
        	 CheckComboStore[] stores = new CheckComboStore[ids.length];  
             for(int j = 0; j < ids.length; j++)  
                 stores[j] = new CheckComboStore(ids[j], values[j]);
    		return stores;
         }
     
         public static ArrayList<String> getListCheck()
         {
        	 return listCheck ;
         }
     }  
     
    // Classe qui représente le renderer de la ComboBox !  
     class CheckComboRenderer implements ListCellRenderer  
     {  
         JCheckBox checkBox;  
     
         public CheckComboRenderer()  
         {  
             checkBox = new JCheckBox();  
         }  
         public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)  
         {  
             CheckComboStore store = (CheckComboStore)value;  
             checkBox.setText(store.id);  
             checkBox.setSelected(((Boolean)store.state).booleanValue());
             return checkBox;  
         }  
     }  
     
     // Modèle de ligne de comboCheck !!
     class CheckComboStore  
     {  
         String id;  
         Boolean state;  
     
         public CheckComboStore(String id, Boolean state)  
         {  
             this.id = id;  
             this.state = state;  
         }
         public String getId()
         {
        	 return id ;
         }
         public Boolean getState()
         {
        	 return state ;
         }
     }

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Points : 533
    Points
    533
    Par défaut
    A ma connaissance , ce n'est pas possible.

    Première solution :

    tu fais un JTextField avec une liste en dessous

    Deuxième solution :

    tu utilises un JMenu dans lequel tu mets des JCheckBoxMenuItem

  3. #3
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Pourquoi ne pas simplement utiliser une JList, "elle sera toujours ouverte" et rien n'interdit d'avoir des combobox ou un multiselect.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 30
    Points : 16
    Points
    16
    Par défaut et bien en fait ...
    Excusez moi de répondre tardivement :

    en fait je n'utilise pas de JList parce que je voudrais dans l'idéal avoir quelque part accessible dans ma fenêtre une sorte de petite CmbBox avec laquelle je puisse sélèctionner toutes les colonnes que je veux afficher dans ma Jtable...

    le JMenu, oui c'est un idée mais je voudrais ma selèction très proche de ma JTable, qui est au milieu.

    Une Jliste prendrait bien trop de place en fait... Et ce qui m'embête avec mon système actuel c'est que à chaque sélèction, ben la cmbBox se ferme et il faut la réouvrir en cliquant dessus pour faire du multiselect ...

    voila

Discussions similaires

  1. [Batch] Forcer ouverture application
    Par le mok dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 09/09/2010, 12h17
  2. Forcer l'ouverture d'une JComboBox
    Par scalande dans le forum Composants
    Réponses: 1
    Dernier message: 13/08/2010, 12h12
  3. forcer ouverture popup
    Par zerocool245 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/09/2008, 21h07
  4. Réponses: 3
    Dernier message: 10/02/2006, 13h04
  5. est il possible de forcer l'ouverture d'un port
    Par voyageur dans le forum Développement
    Réponses: 86
    Dernier message: 23/10/2004, 20h26

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