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

SWT/JFace Java Discussion :

Taille d'un ComboViewer


Sujet :

SWT/JFace Java

  1. #1
    Membre éclairé Avatar de bruman
    Inscrit en
    Juin 2005
    Messages
    566
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2005
    Messages : 566
    Points : 794
    Points
    794
    Par défaut Taille d'un ComboViewer
    Bonjour,

    je crois que le titre est parlant : j'ai des ComboViewer que j'aimerais dimensionner comme je souhaites.

    En effet, j'ai des éléments dans ma liste mais cette dernière est trop petite, du coup, quand je sélectionne une valeur, la taille du ComboViewer ne permet pas d'afficher la totalité du libéllé de la valeur sélectionnée.

    Est-ce que quelqu'un a déjà eu ce soucis? Comment fixer la taille du ComboViewer?

    Merci.
    Le hardware est la partie de l'ordinateur qui prend les coups quand le software se plante.
    Théoriquement, ça fonctionne, sauf erreur....

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Il s'agit d'un problème de Layout (à mon avis). Puisque, selon ton layout, la combo box, qui est géré par le ComboBoxViewer, va avoir une taille adapté à son contenu.
    Un petit exemple pour illustrer mes propos:
    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
    public class Snippet039ComboViewer {
        private class MyContentProvider implements IStructuredContentProvider {
     
            public Object[] getElements(Object inputElement) {
                return (MyModel[]) inputElement;
            }
     
            public void dispose() {
            }
     
            public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            }
     
        }
     
        public class MyModel {
            public int counter;
     
            public MyModel(int counter) {
                this.counter = counter;
            }
     
            public String toString() {
                return "Itemmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm "
                        + this.counter;
            }
        }
     
        public Snippet039ComboViewer(Shell shell) {
            final ComboViewer v = new ComboViewer(shell, SWT.H_SCROLL
                    | SWT.V_SCROLL | SWT.READ_ONLY);
            v.setLabelProvider(new LabelProvider());
            v.setContentProvider(new MyContentProvider());
            MyModel[] model = createModel();
            v.setInput(model);
        }
     
        private MyModel[] createModel() {
            MyModel[] elements = new MyModel[20];
            for (int i = 0; i < 20; i++) {
                elements[i] = new MyModel(i);
            }
            return elements;
        }
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            Display display = new Display();
            Shell shell = new Shell(display);
            shell.setLayout(new FillLayout());
            shell.setText("Combo Test");
            new Snippet039ComboViewer(shell);
            shell.open();
            shell.setMinimumSize(200, 50);
            shell.pack();
            while (!shell.isDisposed()) {
                if (!display.readAndDispatch())
                    display.sleep();
            }
     
            display.dispose();
     
        }
     
    }
    Si tu changes le contenu en modifiant le toString() de MyModel, et en commentant la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shell.setMinimumSize(200, 50);
    Tu vas te retrouver avec un Combo qui ne prendra que la place de son contenu le plus grand.

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Membre éclairé Avatar de bruman
    Inscrit en
    Juin 2005
    Messages
    566
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2005
    Messages : 566
    Points : 794
    Points
    794
    Par défaut
    justement, ca ne le fait pas chez moi, j'ai un composite avec un GridLayout de 3 colonnes et avec des colonnes de taille différentes.
    Je lui attache un label, un Text et un ComboViewer et l'ensemble prend seulement la moitié de ce que ca devrait (il reste de la place à droite) et le ComboViewer est tout petit alors qu'il est a droite des autres.
    Le hardware est la partie de l'ordinateur qui prend les coups quand le software se plante.
    Théoriquement, ça fonctionne, sauf erreur....

  4. #4
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Tu peux nous donner le code de création de cette partie là, avec le plus intéressant, les GridData?
    A mon avis, ce sont tes LayoutData qui ne sont pas bonnes. Dans mon exemple simpliste, j'utilise un FillLayout, mais ça aurait été le même résultat avec un GridLayout qui aurait les bonnes data...

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  5. #5
    Membre éclairé Avatar de bruman
    Inscrit en
    Juin 2005
    Messages
    566
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2005
    Messages : 566
    Points : 794
    Points
    794
    Par défaut
    Bon, résolu.

    Un GridData mis sur les comboviewer avait été mis par défaut avec widthHint = -1...

    Merci quand même
    Le hardware est la partie de l'ordinateur qui prend les coups quand le software se plante.
    Théoriquement, ça fonctionne, sauf erreur....

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

Discussions similaires

  1. Connaitre la taille de la RAM
    Par dway dans le forum Assembleur
    Réponses: 23
    Dernier message: 15/09/2004, 10h05
  2. taille maximale d'une base de donnée paradox
    Par Anonymous dans le forum Paradox
    Réponses: 5
    Dernier message: 14/02/2004, 17h39
  3. Réponses: 3
    Dernier message: 22/07/2002, 14h19
  4. taille du texte dans un viewport
    Par pitounette dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/07/2002, 12h06
  5. comment réduire une image jpeg (taille x*y)
    Par don-diego dans le forum C
    Réponses: 4
    Dernier message: 14/07/2002, 20h06

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