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

Composants Java Discussion :

Afficher le résultat d'une fonction dans une JList


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 63
    Par défaut Afficher le résultat d'une fonction dans une JList
    Bonjour à tous,

    Je cherche à faire un portage de logiciel que que j'ai fait sous vb9,c'est un logiciel de création de clé usb bootable avec dos dessus.

    Comme vous vous en doutez avant de formater le périphérique cible, il faut pouvoir lister les lecteurs (Amovible,Fixe,CD-ROM,Disque virtuel,Non formaté,Réseau,Inconnu) et les charger dans une JList.


    Voila donc ce que j'ai besoin :
    5 JList = OK
    1 JComboxBox = OK
    1 JButton = OK
    2 jLabel = OK
    1 Procédure qui récupere les infos lecteur = J"ai une fonction incompléte
    1 timer qui verifie que l'ancien nombre de lecteur est égal au nouveau pour recharger la liste des lecteurs le cas échéant = Pas encore fait


    Voilà une portion de mon code:
    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
    68
    69
     
     
     
    package usbformattool;
     
    import java.awt.FlowLayout;
    import java.io.File;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    public class FenetreListes extends JFrame {
    	private JList liste1;
    	private JList liste2;
     
     
     	public FenetreListes(){
    		super();
    		build();//On initialise notre fenêtre
    	}
     
    	private void build(){
    		setTitle("USB format tool"); //On donne un titre à l'application
    		setSize(320,240); //On donne une taille à notre fenêtre
    		setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
    		setResizable(true); //On permet le redimensionnement
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
    		setContentPane(buildContentPane());
    	}
     
     
      public static String[] getRoots() {
        File[] roots = File.listRoots();
        String[] names = new String[roots.length];
        for (int i = 0; i < roots.length; ++i)
            names[i] = roots[i].getName();
        return names;
    }
     
     
      private JPanel buildContentPane(){
        JPanel panel = new JPanel();
    		panel.setLayout(new FlowLayout());
     
    		Object[] elements = new Object[]{getRoots().toString()};
    		liste1 = new JList(elements);
    		panel.add(liste1);
     
    		liste2 = new JList(elements);
    		panel.add(liste2);
     
      return panel;
    }
     
     
    	public JList getListe1(){
    		return liste1;
    	}
     
    	public JList getListe2(){
    		return liste2;
    	}
     
     
      public static void main(String[] args) {
        FenetreListes fenetre = new FenetreListes();
      	fenetre.setVisible(true);
        }
     
    }

    Voilà ca me fait une belle fenêtre qui sent le java tous neuf, mais impossible de charger mes JList .
    Je sais que normalement il ne faut pas demander du code tout cuit,mais il faut savoir que c'est ma 4éme tentative d'apprendre java et que chaque fois je laisse tomber pour 2 raisons:
    1: J'arrive jamais à récuperer le résultat de fonctions ou procédure présent dans la meme classr ou une autre.
    2: J'arrive pas a charger mes JList et JCombobox.

    Voilà j'espere qu'une ame charitable va passer par là, et m'expliquer ce qui raccroche.

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Il ne faut pas chercher à convertir le tableau de string renvoyé par getRoots en tableau d'Object. String hérite de Object, donc tu as déja un tableau d'Objects.

    Cela doit suffir pour initialiser ta JList :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste1 = new JList(getRoots());
    Ensuite il ne faut pas appeler la méthode setContentPane pour ajouter ton panel à ta JFrame. Il faut utiliser la méthode add de la classe Container dont hérite JFrame.
    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
    private void build(){
    		setTitle("USB format tool"); //On donne un titre à l'application
    		setSize(320,240); //On donne une taille à notre fenêtre
    		setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
    		setResizable(true); //On permet le redimensionnement
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
    		buildComponents();
    	}
    private JPanel buildComponents(){
        JPanel panel = new JPanel();
    		panel.setLayout(new FlowLayout());
     
    		Object[] elements = new Object[]{getRoots().toString()};
    		liste1 = new JList(elements);
    		panel.add(liste1);
     
    		liste2 = new JList(elements);
    		panel.add(liste2);
                    add(panel);
    }
    J'espère ne pas avoir fait d'erreurs, j'ai répondu un peu rapidement par manque de temps. Je ne pourrai répondre que demain si tu as des questions.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 63
    Par défaut Essais infructueux
    Merci cheryben,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste1 = new JList(getRoots());
    C'est la premiere chose que j'avais essayé,mais ca ne marche pas les JList n'apparaisse meme plus, même aprés afais la modification suivante.

    Une suggestion?

  4. #4
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    As-tu bien ajouté la dernière ligne de la fonction buildComponents telle que je l'ai mise? add(panel);

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 63
    Par défaut Fenetre blanche
    Bonjour cheryben,

    Oui je l'ai fait et j'obtient une fenetre blanche,voici le code actuel:

    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
     
     
     
    package usbformattool;
     
    import java.awt.FlowLayout;
    import java.io.File;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    public class FenetreListes extends JFrame {
    	private JList liste1;
     
     	public FenetreListes(){
    		super();
    		build();
    	}
     
    	private void build(){
    		setTitle("USB format tool"); 
    		setSize(320,240); 
    		setLocationRelativeTo(null); 
    		setResizable(true); 
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    		buildContentPane();
    	}
     
     
           public static String[] getRoots() {
                  File[] roots = File.listRoots();
                  String[] names = new String[roots.length];
                  for (int i = 0; i < roots.length; ++i)
                     names[i] = roots[i].getName();
                  return names;
            }
     
     
            private JPanel buildContentPane(){
        		JPanel panel = new JPanel();
    		panel.setLayout(new FlowLayout());
     
    		liste1 = new JList(getRoots());
    		panel.add(liste1);
     
                    add(panel);
                    return panel;
             }
     
     
    	public JList getListe1(){
    		return liste1;
    	}
     
     
     
        public static void main(String[] args) {
            FenetreListes fenetre = new FenetreListes();
    	fenetre.setVisible(true);
        }
    }

    Bon maintenant il est possible que ce sois la fonction qui ne marche pas (je l'ai choper sur internet),mais comme je te l'ai dit dans mon premier message ce n'est pas une fonction que je veut mais une procedure qui me charge ma listbox ,comme ca je pourrait l'appeler a partir d'un timer qui verifie si le nombre de lecteur est toujour le meme.

    Donc la je te propose de laisser tomber le chargement a partir d'une fonction/objet (sauf si tu trouve ce qui ne va pas sans trop te creuser les meninges) et de me montrer si tu le veut bien un exemple a partir du code existant ,comment appeler une procedure (public je suppose) lors du chargement,et dans cette procedure charger mes JList dans une boucle for each (Car on ne sais pas combien de lecteur il y a) et pour emuler tous ca ,on va ce servir de cet objet :

    Object[] racineLecteurs= new Object[]{"A:/","B:/","C:/","D:/","E:/","F:/","L:/"};

    merci pour ton aidde cheryben

  6. #6
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Pour toi quelle est la différence entre une fonction et une procédure?

    En java, il n'existe que des méthodes, qu'on appelle parfois par abus de langage des fonctions. Mais c'est toujours la même chose, ce sont des méthodes à l'intérieur de classes.

    Sinon après un debug rapide en copiant exactement ton code, il s'avère que l'erreur est toute simple, il y a une erreur dans getRoots(). Il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    names[i] = roots[i].getPath(); // au lieu de getName()
    Il est inutile que ta méthode buildContentPane renvoi le JPanel.

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

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. Réponses: 2
    Dernier message: 04/01/2015, 15h28
  3. [XSLT 1.0] Mettre le résultat de l'appel d'une fonction dans une variable
    Par Giovanny Temgoua dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 16/01/2012, 17h47
  4. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  5. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04

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