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

AWT/Swing Java Discussion :

JOptionPane.showInputDialog taille liste


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Points : 64
    Points
    64
    Par défaut JOptionPane.showInputDialog taille liste
    Bonjour.

    J'utilise des boites de dialogues avec listes (des String[]) qui s'affiche en liste déroulantes.

    Pas de problémes pour ça mais selon les listes, elles s'affiche sur plusieurs lignes ou sur une seule ligne avec à chaque fois un scroll (normal pour une liste déroulante ).

    En fait je voudrais avoir 4 à 5 lignes qui apparaissent dans la liste et non pas un nombre de ligne qui dépent de je ne sais pas quel paramétre.

    Pour être trés clair je donne 2 exemple:
    exemple1: j'ai une liste de 20 noms et il en apparait 10 dans ma fenetre (avec scroll pour voir les autres).
    exemple2: j'ai 200 noms et il n'en apparait qu'un dans ma fenetre (avec scroll pour voir les autres).

    voici un code type que j'utilise pour mes boites de dialogues:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            String monchoixcontact = (String) JOptionPane.showInputDialog(
    fen, "Choisissez votre contact ", "Liste des contacts."
    , JOptionPane.QUESTION_MESSAGE, null, malistecontact, malistecontact[0]);
    malistecontact est un tableau de String.


    Y a t'il une façon de faire pour définir le nombre d'élément a afficher dans la liste déroulante?

    Merci de vos réponses.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Points : 64
    Points
    64
    Par défaut
    bon c'est l'UI qui gére ça.....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    It is up to the UI to decide how best to represent
         * the <code>selectionValues</code>, but usually a
         * <code>JComboBox</code>, <code>JList</code>, or
         * <code>JTextField</code> will be used.
    DOnc si qq a une solution , ça m'interesse ...
    En attendant je continue à chercher une autre solution.

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Le paramètre "message" des JOptionPane n'est pas forcément une String, mais il peut prendre plusieurs forme. Tu peux en particulier lui passer un composant qui sera directement affiché, ou un tableau pour afficher plusieurs éléments les uns au dessus des autres...


    Du coup il devient simple de se faire ta propre boite de dialogue, personnalisé avec les composants que tu veux :

    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
    	public static String showContactListDialog(Component parentComponent, Object[] options, Object initialValue) {
    		// On crée la JList qui contiendra les éléments :
    		JList list = new JList(options);
    		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     
    		// On la place dans un scrollPane de la taille voulu :
    		JScrollPane scrollList = new JScrollPane(list);
    		scrollList.setPreferredSize(new Dimension(240,180));
     
    		// On initialise la valeur initiale :
    		list.setSelectedValue(initialValue, true);
     
    		// On crée le contenu de notre dialogue :
    		// 1 message + le scrollpane contenant la liste :
    		Object[] message = { "Choisissez votre contact ", scrollList };
     
    		// On utilise showOptionDialog(), qui propose l'interface la plus complète :
    		int response = JOptionPane.showOptionDialog(
    				parentComponent, message, "Liste des contacts.", 
    				JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,
    				null, null, null);
     
    		// Et on traite la valeur de retour :
    		String value = null;
    		if (response==JOptionPane.OK_OPTION) {
    			value = list.getSelectedValue().toString();
    		}
    		return value;
    	}
    a++

  4. #4
    Membre actif Avatar de uhrand
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 203
    Points : 275
    Points
    275
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    scrollList.setPreferredSize(new Dimension(240,180));
    ...
    Ou avec setVisibleRowCount:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //scrollList.setPreferredSize(new Dimension(240, 180));
    list.setVisibleRowCount(5);

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par uhrand Voir le message
    Ou avec setVisibleRowCount:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //scrollList.setPreferredSize(new Dimension(240, 180));
    list.setVisibleRowCount(5);
    En effet c'est bien plus propre comme cela

    a++

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Points : 64
    Points
    64
    Par défaut
    Merci bien à vous deux.

    La solution de adiGuba marche impecable, je l'ai modifiée un peu pour ajouter le titre et la legende en variable.

    Par contre , et je comprends pas pourquoi , avec la modif de uhrand , j'ai pas 5 lignes qui apparaissent mais une demi ligne ( à moins que ce soi une tactique pour que les utilisateurs disent qu'ils preferaient avant quand il y avait la ligne entiére ).
    En faite, avec le list.setVisibleRowCount(n) il faut que je multiplie le nombre de ligne n par 10 (environ) pour voire mes n lignes souhaitées.

    Je vais mettre résolu mais si quelqu'un à une explication, ça m'interesse

    Edit: En faites ça marche pour mes autres listes, ça "bug" juste pour une liste (évidemment c'est pour celle avec laquelle j'ai fait mon test ).

    Edit2: Le pourquoi du comment.En fait mon premier élement de ma liste était "" de façon à pouvoir choisir personne dans la liste, j'ai remplacé par " " et c'est tout bon .

    Encore merci à vous 2.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. taille liste déroulante pour tactile
    Par 78alex78 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/03/2007, 12h37
  2. Réponses: 9
    Dernier message: 11/05/2006, 07h08
  3. Boîtes de dialogue JOptionPane.showInputDialog
    Par Flophx dans le forum AWT/Swing
    Réponses: 15
    Dernier message: 25/04/2006, 16h21
  4. Taille : liste déroulante
    Par souska dans le forum Access
    Réponses: 2
    Dernier message: 20/09/2005, 23h42
  5. [JOptionPane.showInputDialog] Valeur initiale + titre
    Par yanndublanche dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 03/08/2005, 14h43

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