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 :

[SWT Eclipse 3.5] List et ajout dynamique d'item


Sujet :

SWT/JFace Java

  1. #1
    Membre régulier Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 84
    Points
    84
    Par défaut [SWT Eclipse 3.5] List et ajout dynamique d'item
    Bonjour,

    J'ai une liste d'items qui correspond à des noms de fichiers. J'ai un bouton qui me permet d'ouvrir un FileDialog pour ajouter un nouveau fichier à la liste. Le problème est que la taille de cette liste ne se met pas à jour et je ne vois donc pas le fichier ajouté.
    Ce que je souhaite et que je n'arrive donc pas à faire, c'est fixé un nombre de lignes minimum et faire que la liste soit scrollable...

    Merci d'avance pour votre aide.

  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
    Bonjour,

    La solution consiste soit à passer par un ListViewer JFace soit à mettre à jour correctement ta liste.
    Première solution:
    Dans ce Viewer, tu lui passes comme input la liste des fichiers sélectionnables (mis à jour à chaque ajout de fichier) et c'est beaucoup plus robuste.
    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
        /**
         * 
         */
        public static void main(final String[] args) {
            Display display = new Display();
            final Shell shell = new Shell(display);
            shell.setLayout(new GridLayout());
            Button button = new Button(shell, SWT.PUSH);
            button.setLayoutData(new GridData());
     
            final ListViewer viewer =
                new ListViewer(shell, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL
                    | SWT.BORDER);
            viewer.getList().setLayoutData(
                new GridData(SWT.FILL, SWT.FILL, true, true));
            viewer.setContentProvider(new ArrayContentProvider());
            viewer.setLabelProvider(new LabelProvider() {
     
                /**
                 * {@inheritDoc}
                 */
                @Override
                public String getText(final Object element) {
                    return super.getText(element);
                }
            });
            final List < File > selectableFiles = new ArrayList < File >();
            button.addSelectionListener(new SelectionAdapter() {
     
                /**
                 * {@inheritDoc}
                 */
                @Override
                public void widgetSelected(final SelectionEvent e) {
                    FileDialog dialog = new FileDialog(shell, SWT.OPEN);
                    String path = dialog.open();
                    if (path != null) {
                        File selectedFile = new File(path);
                        selectableFiles.add(selectedFile);
                        viewer.setInput(selectableFiles);
                    }
                }
            });
            button.setText("Add File");
            shell.setSize(300, 300);
            shell.open();
            while (!shell.isDisposed()) {
                if (!display.readAndDispatch()) {
                    display.sleep();
                }
            }
            display.dispose();
        }
    Seconde solution:
    Mettre à jour le composant parent de la liste à chaque ajout d'élément:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Display.getDefault().synchExec(new Runnable() {
        /**
         * {@inheritDoc}
         */
        public void run() {
            myList.getParent().layout();
        }
    });
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

Discussions similaires

  1. Ajouter dynamiquement des item au menu
    Par Ryu2000 dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 16/05/2012, 16h24
  2. ajout dynamique d'item dans menu
    Par med_ellouze dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/01/2008, 10h45
  3. Ajout dynamique dans une liste <ul>
    Par sacados1 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/03/2007, 20h14
  4. Ajouter dynamiquement un Item à un menu
    Par firejocker dans le forum MFC
    Réponses: 8
    Dernier message: 25/11/2005, 11h52
  5. ajouter dynamiquement des items dans un popup menu
    Par Malone dans le forum Composants VCL
    Réponses: 7
    Dernier message: 23/08/2005, 16h08

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