11
votes

Sélectionnez plusieurs éléments dans la jlist sans utiliser la touche Ctrl / Command

Je cherche un moyen de sélectionner plusieurs éléments dans une jlist en cliquant simplement sur chaque article.

La manière habituelle de le faire est de contenir la touche Commande / Ctrl, puis cliquez sur.

Je pense qu'il serait plus intuitif pour permettre à l'utilisateur de cliquer sur les éléments activés et éteints sans avoir à contenir une clé supplémentaire.


3 commentaires

Ma candidature est destinée à la littérate non informatique, donc je sentais que je n'avais pas besoin d'utiliser la norme (les derniers mots célèbres). J'ai trouvé de l'expérience que les gens oublient parfois de tenir CTRL et de désélectionner tous les autres articles. J'allais faire un peu de test de convivialité pour voir ce que les gens préfèrent.


Recette d'une application funky non standard (comme Lotus Notes) ..


A définitivement un sens. J'étais testé et il n'y a pas de didacticiel disant que vous devez appuyer sur le contrôle pour effectuer une sélection multiple ... Test et teste et n'a trouvé aucun problème dans le code .... +1.


4 Réponses :


0
votes

Je pense que vous pouvez facilement accomplir cela en attachant un auditeur de souris sur votre jlist et en sélectionnant programme l'objet dans le code de l'auditeur. Bien sûr, vous aurez probablement besoin d'un certain code pour déterminer quel élément a été pressé de basculer sur certaines coordonnées.


0 commentaires

13
votes

pense à deux fois avant de changer de comportement par défaut. Sauf si vous avez un cas particulier, je ne voudrais pas que ma liste fonctionne différente de partout ailleurs :)

Cela dit, vous devriez pouvoir utiliser votre propre listelectionmodel : xxx


3 commentaires

Merci qui a travaillé un régal. Je ne suis pas convaincu que c'est la bonne chose à faire, mais je voudrais le tester avec quelques personnes.


Il fonctionne mais faites attention à ce que toute liste de liste de liste sur cette liste ne soit pas informée. Pour résoudre ce problème, ajoutez FirevaluCanged (index0, index1); à la fin de la méthode.


Fonctionne bien normalement, mais pas si vous déplacez le pixel de la souris pendant que le bouton est enfoncé. Il devient alors désélectionné à nouveau :-(



4
votes

Pour cela, vous utilisez normalement un groupe de cocher de la case à cocher jcheckbox articles.

Les utilisateurs sont déjà utilisés avec le fait qu'ils doivent appuyer sur Ctrl pour sélectionner plusieurs éléments dans une liste de liste. Vous ne devriez pas changer l'expérience / attente par défaut.


0 commentaires

3
votes
list.setSelectionModel(new DefaultListSelectionModel() {
    private int i0 = -1;
    private int i1 = -1;

    public void setSelectionInterval(int index0, int index1) {
        if(i0 == index0 && i1 == index1){
            if(getValueIsAdjusting()){
                 setValueIsAdjusting(false);
                 setSelection(index0, index1);
            }
        }else{
            i0 = index0;
            i1 = index1;
            setValueIsAdjusting(false);
            setSelection(index0, index1);
        }
    }
    private void setSelection(int index0, int index1){
        if(super.isSelectedIndex(index0)) {
            super.removeSelectionInterval(index0, index1);
        }else {
            super.addSelectionInterval(index0, index1);
        }
    }
});

0 commentaires