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

JavaFX Discussion :

Rajout d'élément dans un composant swing


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 122
    Par défaut Rajout d'élément dans un composant swing
    Bonjour,

    Voilà j'ai un problème j'ai créé dans ma scene javaFx le composant Swing suivant:
    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
     
    public class ListViewSwing extends SwingComponent{
     
        /*on garde ici une reference public pour pouvoir acceder a notre composant*/
        public var dlm:DefaultListModel;
        public var list: JList;
     
        public override function createJComponent(): javax.swing.JScrollPane{
            dlm = new DefaultListModel();
            list = new JList(dlm);
            var ascenseur:JScrollPane = new JScrollPane(list);
     
            /** activer la selection multiple */
            list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
     
            // activer la possibiliter de glisser un objet
            list.setDragEnabled(true);
            list.setTransferHandler(new MyTransferHandler());
     
     
            return ascenseur;
        }
     
     }
    Je veux rajouter dans ma liste des éléments depuis d'autres classe javaFx
    J'effectue donc comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var model: ListViewSwing;
    model.dlm.addElement(chemin);
    Mais rien ne s'ajoute dans ma liste :'(.

    Avant c'était des classes java qui rajoutaient des éléments dans ma liste. J'accédais à ma list par le biais d'une interface java et tout fonctionnait très bien. Pourquoi cela ne marche plus maintenant :'(.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 899
    Billets dans le blog
    54
    Par défaut
    Si model n'est pas initialisé (= null) non ça ne marchera pas.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 899
    Billets dans le blog
    54
    Par défaut
    Ce qui soulève le point interressant de savoir comment le code de la question précédente a pu fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public override function importData(cp: JComponent, tr: Transferable): Boolean {
            println("importData() {model}");
            if (tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                try {
                    var files: List = (tr.getTransferData(DataFlavor.javaFileListFlavor) as List);
                    for (i in [0..files.size()]) {
                        var file: File = (files.get(i) as File);
                        myList = "{file.getPath()}\n";
                        if (file.isFile()) {
                            if (file.length() < 4294967295.0) {
                                println("importData() addElement {model} {model.dlm} {myList}");

    importData() addElement null [000000, 111111, 222222, 333333, 444444] C:\Users\Fabrice\Desktop\Photo.txt
    C'est moi ou y a un gros bug ? Sachant que j'ai rempli la list dans le script de lancement avec les 00000 -> 44444 et que model est null, comment model.dlm peut ne pas être null ?

    Bon sinon pour le problème du jour...

    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
     
    public class ListViewSwing extends SwingComponent{
     
        /*on garde ici une reference public pour pouvoir acceder a notre composant*/
        public-read var dlm:DefaultListModel;
        public-read var list: JList;
     
        public override function createJComponent(): javax.swing.JScrollPane{
            dlm = new DefaultListModel();
            list = new JList(dlm);
            var ascenseur:JScrollPane = new JScrollPane(list);
     
            /** activer la selection multiple */
            list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
     
            // activer la possibiliter de glisser un objet
            list.setDragEnabled(true);
            list.setTransferHandler(MyTransferHandler{
                model: this
            });
     
     
            return ascenseur;
        }
     
     }
    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
     
    public class MyTransferHandler extends TransferHandler {
     
        var myList: String = "";
        public-init var model: ListViewSwing;
     
        /**
         * Cette fonction permet d'indiquer les données qui peuvent
         * être acceptées ou non par le composant.
         * @param cp
         * @param df
         * @return
         */
        public override function canImport(cp: JComponent, df: nativearray of DataFlavor): Boolean {
            println("canImport() {model}");
            def dfFX: DataFlavor[] = df;
            for (i in [0..sizeof dfFX - 1]) {
                if (df[i].equals(DataFlavor.javaFileListFlavor)) {
                    return true;
                }
                if (df[i].equals(DataFlavor.stringFlavor)) {
                    return true;
                }
            }
            return false;
        }
     
        public override function importData(cp: JComponent, tr: Transferable): Boolean {
            println("importData() {model}");
            if (tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                try {
                    var files: List = (tr.getTransferData(DataFlavor.javaFileListFlavor) as List);
                    for (i in [0..files.size()]) {
                        var file: File = (files.get(i) as File);
                        myList = "{file.getPath()}\n";
                        if (file.isFile()) {
                            if (file.length() < 4294967295.0) {
                                println("importData() addElement {model} {model.dlm} {myList}");
                                model.dlm.addElement(myList);
                                return true;
                            } else {
                                Alert.inform("Le fichier {file.getName()} est trop volumineux et ne peux être ajouté");
                            }
                        } else {
                            return false;
                        }
                    }
                    return false;
                } catch (Exception) {
                    Exception.printStackTrace();
                }
                return false;
            }
            if (tr.isDataFlavorSupported(DataFlavor.stringFlavor)) {
                try {
                    var myData: String = (tr.getTransferData(DataFlavor.stringFlavor) as String);
                    (cp as JList).setName(myData);
                } catch (Exception) {
                    Exception.printStackTrace();
                }
            }
            return false;
        }
     
    };
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 122
    Par défaut
    Merci beaucoup de m'avoir répondu .

    Ca marche.

    J'ai procédé de même pour pouvoir rajouter des fichiers dans ma liste va un JFileChooser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public-read var JList:ListViewSwing;
     
    var fic = FileChooser{model:JList}
    fic.choixFic();
    Encore une fois merci

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/10/2012, 08h35
  2. Rajouter des éléments dans une collection depuis une autre classe
    Par Sup3rc0c0 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 15/03/2012, 17h48
  3. Réponses: 5
    Dernier message: 01/12/2011, 15h02
  4. Réponses: 0
    Dernier message: 28/05/2010, 19h42
  5. Intégration de fichiers pdf dans un composant Swing
    Par m_piou dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 15/10/2007, 17h12

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