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

AWT/Swing Java Discussion :

[Swinglabs][JXTable] Récupére l'index d'une colonne cachée


Sujet :

AWT/Swing Java

Vue hybride

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut [Swinglabs][JXTable] Récupére l'index d'une colonne cachée
    Bonjour ba je crois que tout est dans le titre.

    En fait à l'heure actuelle j'y y arrive parcourant les colonnes du modèle et comparant au fur et à mesure les identifiers, mais ça ne me semble pas très propres, et dans la version actuelle de Swinglabs (0.8) le DefaultTableModelExt semble avoir disparu depuis la 0.7.

    Donc si vous aviez une idée, j'en serait reconnaissant.

    Accessoirement je remplis ça table avec des sources pouvant être null.
    J'ai donc créé un model simple (voir couillon mais bon) et je me retrouve avec un problème sur la surdéfinition de la méthode getClass qui forcément plante sur les objects null.
    Je me demandais si il n'y avait pas moyen d'obtenir le type de ces objets null par le plus grand des hasards (si ça se trouve je le connais mais j'ai le cerveau en charpie dernèrement)

    Bien à vous...

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Toujour pas d'idée?

  3. #3
    ms7
    ms7 est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Par défaut
    Desole je ne peut pas trop t d.

    mais je me demandais si tu pouvait m´expliquer rapidement comment fonction swingx labs. g telecharger le fichier zip (swing-bin.zip) mais je ne c pas comment l´utiliser??? il n´y a aucun main...

    J´aimerai connecter le contenu d´une treetable a une base de donnees mysq. Est-ce possible?
    merci

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour ce qui est de l'utilisation de swinglabs dans le jar que tu as récupéré ici, tu trouve normalement une archive jar du nom de swinglabs-0.8.0.jar. Pour l'utiliser il suffit d'ajouter ce jar à ton classpath (ou si tu es sous eclipse dans les propriétés de ton projet, section java Build path, onglet libraries, bouton add external jars), puis tu as acces à l'ensemble des classes dispo dans ce jar

    Pour des exemples d'utilisation du binding de Swinglabs tu en trouveras dans le ppt pondu par gfx à l'adresse suivante: http://ftp.developpez.tv/java/semina...esktopJava.ppt, par contre utilisant Hibernate de mon coté sur le projet actuel, je ne me suis pas trop penché dessus.

  5. #5
    ms7
    ms7 est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Par défaut
    ok merci

    g creer un nouveau projet dans Netbeans avec le fichier zip que tu ma dit de telecharger. Mais j´aimerais avoir un example de JTreeTable que je puisse lancer. Il y a plein de packages et je ne c pas comment utiliser tout ca. Ca ma l´air assez complique???

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    il ne faut pas ajouter le fichier .zip a ton projet mais juste le fichier .jar contenu dans le zip.

    Et pour ta JXTreeTable (et non JTreeTable) il te suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JXTreeTable maTreeTable = new JXTreeTable(monModel)
    ou monModel correspond à un model de TreeTable (dsl je n'ai pas la doc sous la main), il te suffira de regarder la doc dans le fichier Zip

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bon au final j'aurais résolu temporairemnt le pb par des solution pas forcément très belles, mais bon ...

    Donc pour le problème des colonnes cachées j'ai juste ajouté une fontion getColumnIndex(String columnName) qui renvoie si elle existe l'index de la colonne dont le nom est passé en paramètre et balance une exception sinon

    Pour le second problème je contourne avec une HashTable contenant le description du type de données de chaque colonne (enfin plutôt un objet properties mais bon c'est kif-kif bourricot) que je passe au modèle afin qu'il puisse "s'autodéterminer" pour le type de la colonne et ne pas dépendre du type des objets contenus.


    Mais bon si vous avez des solutions plus intelligentes je suis preneur

  8. #8
    ms7
    ms7 est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    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
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
     
    /*
     * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved.
     * 
     * Redistribution and use in source and binary forms, with or
     * without modification, are permitted provided that the following
     * conditions are met:
     * 
     * - Redistributions of source code must retain the above copyright
     *   notice, this list of conditions and the following disclaimer. 
     *   
     * - Redistribution in binary form must reproduce the above
     *   copyright notice, this list of conditions and the following
     *   disclaimer in the documentation and/or other materials
     *   provided with the distribution. 
     *   
     * Neither the name of Sun Microsystems, Inc. or the names of
     * contributors may be used to endorse or promote products derived
     * from this software without specific prior written permission.  
     * 
     * This software is provided "AS IS," without a warranty of any
     * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
     * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
     * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
     * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY
     * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR
     * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR
     * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE 
     * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,   
     * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER  
     * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF 
     * THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS 
     * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
     * 
     * You acknowledge that this software is not designed, licensed or
     * intended for use in the design, construction, operation or
     * maintenance of any nuclear facility.
     */
     
    import javax.swing.*;
    import javax.swing.border.*;
    import javax.swing.event.*;
    import javax.swing.table.*;
    import javax.swing.tree.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.*;
    import java.util.*;
    import java.text.DateFormat;
     
    /**
     * Assembles the UI. The UI consists of a JTreeTable and a menu.
     * The JTreeTable uses a BookmarksModel to visually represent a bookmarks
     * file stored in the Netscape file format.
     *
     * @author Scott Violet
     */
    public class TreeTableExample3 {
        /** Number of instances of TreeTableExample3. */
        private static int         ttCount;
     
        /** Used to represent the model. */
        private JTreeTable         treeTable;
        /** Frame containing everything. */
        private JFrame             frame;
        /** Path created for. */
        private String             path;
     
     
        /**
         * Creates a TreeTableExample3, loading the bookmarks from the file
         * at <code>path</code>.
         */
        public TreeTableExample3(String path) {
    	this.path = path;
    	ttCount++;
     
    	frame = createFrame();
     
    	Container       cPane = frame.getContentPane();
    	JMenuBar        mb = createMenuBar();
    	TreeTableModel  model = createModel(path);
     
    	treeTable = createTreeTable(model);
            JScrollPane sp = new JScrollPane(treeTable);
            sp.getViewport().setBackground(Color.white);
    	cPane.add(sp);
     
    	frame.setJMenuBar(mb);
    	frame.pack();
    	frame.show();
        }
     
        /**
         * Creates and returns the instanceof JTreeTable that will be used.
         */
        protected JTreeTable createTreeTable(TreeTableModel model) {
    	JTreeTable       treeTable = new JTreeTable(model);
     
    	treeTable.setDefaultRenderer(Date.class, new BookmarksDateRenderer());
    	treeTable.setDefaultRenderer(Object.class,
    				     new BookmarksStringRenderer());
    	return treeTable;
        }
     
        /**
         * Creates the BookmarksModel for the file at <code>path</code>.
         */
        protected TreeTableModel createModel(String path) {
    	Bookmarks bookmarks = new Bookmarks(path);
    	return new BookmarksModel(bookmarks.getRoot());
        }
     
        /**
         * Creates the JFrame that will contain everything.
         */
        protected JFrame createFrame() {
    	JFrame       retFrame = new JFrame("JTreeTable DB Viewer  -- " + path);
     
    	retFrame.addWindowListener(new WindowAdapter() {
    	    public void windowClosing(WindowEvent we) {
    		frame.dispose();
    		if (--ttCount == 0) {
    		    System.exit(0);
    		}
    	    }
    	});
    	return retFrame;
        }
     
        /**
         * Creates a menu bar.
         */
        protected JMenuBar createMenuBar() {
            JMenu            fileMenu = new JMenu("File"); 
    	JMenuItem        menuItem;
     
    	menuItem = new JMenuItem("Open");
    	menuItem.addActionListener(new ActionListener() {
    	    public void actionPerformed(ActionEvent ae) {
    		JFileChooser      fc = new JFileChooser(path);
    		int               result = fc.showOpenDialog(frame);
     
    		if (result == JFileChooser.APPROVE_OPTION) {
    		    String      newPath = fc.getSelectedFile().getPath();
     
    		    new TreeTableExample3(newPath);
    		}
    	    }
    	});
    	fileMenu.add(menuItem);
    	fileMenu.addSeparator();
     
    	menuItem = new JMenuItem("Exit"); 
    	menuItem.addActionListener(new ActionListener() {
    	    public void actionPerformed(ActionEvent ae) {
    		System.exit(0);
    	    }
    	});
    	fileMenu.add(menuItem); 
     
     
    	// Create a menu bar
    	JMenuBar        menuBar = new JMenuBar();
     
    	menuBar.add(fileMenu);
     
    	// Menu for the look and feels (lafs).
    	UIManager.LookAndFeelInfo[]        lafs = UIManager.
    	                                    getInstalledLookAndFeels();
    	ButtonGroup                        lafGroup = new ButtonGroup();
     
    	JMenu          optionsMenu = new JMenu("Options");
     
    	menuBar.add(optionsMenu);
     
    	for(int i = 0; i < lafs.length; i++) {
    	    JRadioButtonMenuItem rb = new JRadioButtonMenuItem(lafs[i].
    							       getName()); 
    	    optionsMenu.add(rb);
    	    rb.setSelected(UIManager.getLookAndFeel().getName().equals
    			   (lafs[i].getName()));
    	    rb.putClientProperty("UIKey", lafs[i]);
    	    rb.addItemListener(new ItemListener() {
    	        public void itemStateChanged(ItemEvent ae) {
    	            JRadioButtonMenuItem rb2 = (JRadioButtonMenuItem)ae.
    			                       getSource();
    	            if(rb2.isSelected()) {
    		        UIManager.LookAndFeelInfo       info =
                                          (UIManager.LookAndFeelInfo)
    			               rb2.getClientProperty("UIKey");
    		        try {
    		            UIManager.setLookAndFeel(info.getClassName());
    		            SwingUtilities.updateComponentTreeUI(frame);
    			}
    			catch (Exception e) {
    		             System.err.println("unable to set UI " +
    						e.getMessage());
    			}
    	            }
    	        }
    	    });
    	    lafGroup.add(rb);
    	}
    	return menuBar;
        }
     
     
        /**
         * The renderer used for Dates in the TreeTable. The only thing it does,
         * is to format a null date as '---'.
         */
        private static class BookmarksDateRenderer extends
                       DefaultTableCellRenderer {
    	DateFormat formatter;
    	public BookmarksDateRenderer() { super(); }
     
    	public void setValue(Object value) { 
    	    if (formatter==null) {
    		formatter = DateFormat.getDateInstance(); 
    	    }
    	    setText((value == null) ? "---" : formatter.format(value)); 
    	}
        }
     
     
        /**
         * The renderer used for String in the TreeTable. The only thing it does,
         * is to format a null String as '---'.
         */
        static class BookmarksStringRenderer extends DefaultTableCellRenderer {
    	public BookmarksStringRenderer() { super(); }
     
    	public void setValue(Object value) { 
    	    setText((value == null) ? "---" : value.toString());
    	}
        }
     
     
        public static void main(String[] args) {
    	if (args.length > 0) {
    	    // User is specifying the bookmark file to show.
    	    for (int counter = args.length - 1; counter >= 0; counter--) {
    		new TreeTableExample3(args[counter]);
    	    }
    	}
    	else {
    	    // No file specified, see if the user has one in their home
    	    // directory.
    	    String            path;
     
    	    try {
    		path = System.getProperty("user.home");
    		if (path != null) {
    		    path += File.separator + ".netscape" + File.separator +
    			    "bookmarks.xml";
    		    File file = new File(path);
    		    if (!file.exists()) {
    			path = null;
    		    }
    		}
    	    }
    	    catch (Throwable th) {
    		path = null;
    	    }
    	    if (path == null) {
    		// None available, use a default.
    		path = "bookmarks.xml";
    	    }
                new TreeTableExample3(path);
    	}
        }
    }
    Voici un petit example de JTreeTable ke g recuperer chez Sun. G ajouter le fichier .jar a ma librairie et j´aimerai savoir comment integrer la ligne de code que tu ma fournie. Desole, je debute en java....Merci

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Premièrement tu ne vas pas utiliser ce code car celui de la JXTreeTable est tout de même plus abouti.

    Ensuite tu ajoute le jar de winglabs à ton projet et tu commence à utiliser ta JXTreeTable avec de nombreux allers retours à la javadoc fournie avec swinglabs (et pas celle de sun )

  10. #10
    ms7
    ms7 est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Par défaut

    desole je n´ai pas trop compris ton dernier post....Où est le code de la JXTreeTable dans le fichier zip.?

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    tu ne prends pas le code (à la limite tu n'en a pas grand chose à faire du code, et puis de toute façon le code source de la version 0.8 de swinglabs n'est pas encore dispo), il faut juste avoir le jar qui contient les .class.
    Tu ajoute le jar à ton classpath ou a ton projet sous netbeans puis tu peux utiliser la JXTreeTable comme tout objet java.

    Donc tu décompresse ton zip, puis dedans tu cher un fixhier s"appelant Swinglabs-0.8.0.jar et tu l'ajoute à ton projet.

    Et puis avant de t'attaquer a de gros projets utilisantt de gros composants tels qu'une TreeTable essaye un peu de comprendre comment fonctionne java (savoir ce qu'est le classpath, à quoi servent les jars, à quoi correspondent exactement les .class et tout le toutim)

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

Discussions similaires

  1. récupéré les cellules d'une colonne d'une listview
    Par mrrenard dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 29/05/2008, 10h46
  2. Obtenir l'index d'une colonne d'après son nom
    Par The eye dans le forum VB.NET
    Réponses: 6
    Dernier message: 05/03/2008, 18h48
  3. Obtenir l'index d'une colonne
    Par Dereck07 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/03/2008, 19h03
  4. INDEX sur une colonne qui peut être NULL
    Par dorian53 dans le forum Requêtes
    Réponses: 15
    Dernier message: 29/11/2007, 17h13
  5. Index sur une colonne Date
    Par sjaeger dans le forum Oracle
    Réponses: 11
    Dernier message: 10/11/2005, 14h55

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