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 :

Charger un fichier de properties directement dans un JTable


Sujet :

Composants Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Par défaut Charger un fichier de properties directement dans un JTable
    Bonjour,
    je voudrai savoir s'il était possible de remplir directement les colonnes d'un JTable à partir d'un fichier properties, que l'on a préalablement chargé dans un objet Properties?

    Merci

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah tu peux créer ton propre TableModel basé sur une instance de la classe Properties.

    Cf ce cours sur les modèles http://baptiste-wicht.developpez.com...ing/jtable/#L3

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Par défaut
    Merci, je vais regarder de ce coté là.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Par défaut
    Bonjour,
    j'ai essayé de reproduire la classe ModeleStatiqueOBjet en suivant le tutorial, mais il y a un endroit où je bloque :
    Je ne sais pas comment renvoyer la bonne valeur au niveau du switch, afin d'afficher les valeurs de mon fichier properties.

    J'ai pensé à changer le type attendu en paramètre en String, mais ça ne fonctionne pas, il faut obligatoirement prendre un int rowIndex...

    Avez-vous une solution?



    Code java : 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
     
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.Properties;
     
    import javax.swing.table.AbstractTableModel;
     
    @SuppressWarnings("serial")
    public class ModeleStatiqueObjet extends AbstractTableModel {
     
        private final String[] entetes = {"clé","valeur"};
    	private Properties prop = new Properties();
     
        public ModeleStatiqueObjet() {
        	try {
    	// Ici le fichier contenant les données de configuration
    		FileInputStream in = new FileInputStream("WAS/ecare.cfg");
     
    		prop.load(in);
    		in.close();
    	} catch (IOException e) {
    	// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
        }
        public int getRowCount() {
            return prop.size();
        }
     
        public int getColumnCount() {
            return entetes.length;
        }
     
        public String getColumnName(int columnIndex) {
            return entetes[columnIndex];
        }
     
        public Object getValueAt(String rowIndex, int columnIndex) {
            switch(columnIndex){
                case 0:
                    return rowIndex;
                case 1:
                    return prop.getProperty(rowIndex);
                default:
                    return null; //Ne devrait jamais arriver
            }
        }
        public Object getValueAt(int rowIndex, int columnIndex) {
    	// TODO Auto-generated method stub
    	return null;
        }
    }

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 918
    Billets dans le blog
    54
    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

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Par défaut
    Ahh, mais oui, mes cours de l'année dernière...
    J'aurai dû y penser!

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Par défaut
    Après réflexion, je ne vois pas trop comment l'implémenter...
    Je n'avais utilisé qu'une seule fois le patern adaptateur, pour transformer un vector en string.

    Mais là, il me semble que c'est plus que de la conversion de type.

    Je ne trouve pas comment faire pour correctement utiliser la méthode GetValueAt() .

    Merci de votre aide

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 918
    Billets dans le blog
    54
    Par défaut
    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
    public class PropertiesTableModelAdapter extends Properties implements TableModel {
      /**
       * {@inheritDoc}
      */
     @Override
     public int getRowCount() {
       return size();
     }
     
      /**
       * {@inheritDoc}
      */
     @Override
     public int getColumnCount() {
       return 2;
     }
     
     [...]
    }
    Sinon ca marcherait tout aussi bien de cette manière :

    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
    public class PropertiesTableModelAdapter extends DefaultTableModel {
      private Properties delegated = new Properties();
     
     
      /**
       * {@inheritDoc}
      */
     @Override
     public int getRowCount() {
       return delegated.size();
     }
     
      /**
       * {@inheritDoc}
      */
     @Override
     public int getColumnCount() {
       return 2;
     }
     
     [...]
    }
    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

  9. #9
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 918
    Billets dans le blog
    54
    Par défaut
    quand au getValueAt() :

    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
     
      // Penser à recharger quand on charge le fichier properties.
      private List<String> keys = new ArrayList<String>(delegated.getProperties());
     
      /**  
        * {@inheritDoc}
       */
      public String getValueAt(int row, int column) {
        if (column >= 2) {
          [...]
        }
        String result = keys.get(row);
        result = (column == 1) ? delegated.get(result) : result;
        return result;
      }
    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

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Par défaut
    Merci bouye.
    J'ai repris le deuxième code que tu m'as proposé, ainsi que la méthode getValueAt().

    Juste une petite question, lorsque tu crée la liste de String, tu appelle la méthode getProperties(), mais celle-ci n'existe pas.
    Le but, c'est juste de remplir chaque élément de la liste avec une propriété, c'est bien ça?

    (Quand je parle de propriété, je parle de la valeur et pas de la clé : clé=valeur dans le fichier properties)

  11. #11
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 918
    Billets dans le blog
    54
    Par défaut
    yep remplace ça par keys() ou ce que tu veux qui permet de récupérer toutes les clés et si possible sous forme de String (pense à trier la liste après d'ailleurs avec Collections.sort()).
    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

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 389
    Par défaut
    Merci, j'ai réussi à m'en sortir en utilisant Properties.keys(), qui fournit la liste des clés.

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

Discussions similaires

  1. Charger un fichier de properties
    Par bonano dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 10/08/2011, 15h02
  2. Réponses: 0
    Dernier message: 26/01/2011, 13h01
  3. Charger un fichier de properties
    Par piltrafeta dans le forum GWT et Vaadin
    Réponses: 7
    Dernier message: 20/12/2010, 14h53
  4. Comment charger un fichier txt du web dans un memo Delphi - Pascal
    Par michaelminelli1 dans le forum Débuter
    Réponses: 2
    Dernier message: 14/11/2008, 17h30
  5. Réponses: 1
    Dernier message: 15/03/2006, 16h30

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