Question

Je suis au courant de JList et JComboBox. J'ai besoin de la chute de zone de liste déroulante vers le bas avec des fonctionnalités multiples fonctionnalités de sélection qui fournit JList.

En effet, le contenu de la liste sont trop énormes pour afficher à l'aide d'une liste simple. Je dois également sélectionner plusieurs éléments, sinon je l'aurais été content de JComboBox.

Toutes les suggestions?

Était-ce utile?

La solution

Lors de l'utilisation multi-sélection, il est préférable d'utiliser une liste d'une zone de liste déroulante. Comme métaphores graphiques vont, les gens attendent une zone de liste déroulante pour être simple sélection, alors que les listes peuvent être soit.

  

le contenu de la liste est trop grand pour afficher à l'aide d'une liste simple,

Placez le JList dans un JScrollPane. Vous pouvez appeler setVisibleRowCount (int) sur la JList pour spécifier le nombre de lignes à la fois doivent être présentés.

Autres conseils

Vous pouvez faire une CellRenderer personnalisée pour la zone de liste déroulante et ajouter cases à cocher que les composants, de sorte que vous pouvez vérifier et les décocher. Vous devez faire quelque chose comme ceci:

public class MyComboBoxRenderer implements ListCellRenderer {

    private String[] items;
    private boolean[] selected;

    public MyComboBoxRenderer(String[] items){
         this.items = items;
         this.selected = new boolean[items.lenght];
    }

    public Component getListCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int index) {
         // Create here a JLabel with the text
         // Create here a JCheckBox
         // Add them to a layoutmanager
         return this;
    }

    public void setSelected(int i, boolean flag)
    {
         this.selected[i] = flag;
    }

}

Si vos données ont un caractère hiérarchique, tenez bien compte du composant Outline de NetBeans, discuté dans en annonçant la nouvelle balançoire Arbre table et dans cette réponse . Voici le Développement Version actuelle de l'API.

Pour obtenir la fonctionnalité décrite, je me suis finalement décidé de « abus » du JMenuBar et y ajouter plusieurs JCheckBoxMenuItems. L'interface graphique puis correspond parfaitement à la fin (au moins pour moi), il est juste la manipulation du ItemEvent que les risques pour devenir un peu ennuyeux.

(enfin là, je défini une logique binaire sur les éléments, puis peut me limiter à la manipulation d'un seul type d'événement)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top