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

Interfaces Graphiques en Java Discussion :

Conseils sur la réalisation d'une interface


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Points : 167
    Points
    167
    Par défaut Conseils sur la réalisation d'une interface
    Salut à tous, je veux avoir ce type d'interface



    mais je ne sais pas quels types de composants utiliser. La partie qui m'interesse le plus c'est la seconde partie de l'interface. Je veux pouvoir cliquer sur une croix et avoir des infos liés un peu comme sur l'image. En gros j'ai des infos issuent d'une bd que je veux afficher et lorsque je cliquerai sur la croix associée j'aurai accès à d'autres infos liées à celles-ci. L'image ci-dessus est l'illustration parfaite de ce que je veux.
    Merci

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    La partie principale de l'interface est ce qu'on appelle un treetable. Il y en a une excellente implémentation dans le projet SwingX : JXTreeTable.

    Sinon le reste de l'interface n'est fait qu'avec des composants de base de Swing.

  3. #3
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Points : 167
    Points
    167
    Par défaut
    merci pour l'aide mais j'ai été sur le lien et je n'arrive pas à voir l'implémentation dont tu m'as parlé, je me suis même créé un compte sur le site. Si tu peux me dire comment faire ça m'aiderai énormément.

  4. #4
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Voici un exemple tiré d'un de mes projets :

    Création de la JXTreeTable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    JXTreeTable treeTable = new JXTreeTable(model);
    treeTable.setTreeCellRenderer(new ElementsCellRenderer());
    treeTable.setAutoCreateColumnsFromModel(true);
    treeTable.setSortable(false);
    treeTable.getTableHeader().setReorderingAllowed(false);
    treeTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
    treeTable.setColumnControlVisible(true);
    treeTable.setRootVisible(false);
    treeTable.packAll();
    Le renderer est également le même que pour un JTree.

    Pour ce qui est du modèle, c'est un peu différent, sans être compliqué :

    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
    /**
     * A results tree table model.
     *
     * @author Baptiste Wicht
     */
    public class ResultsTreeTableModel extends DefaultTreeTableModel implements IModel {
        /**
         * The columsn of the tree table.
         *
         * @author Baptiste Wicht
         */
        public interface Columns {
            int NAME = 0;
            int TOTAL = 1;
            int AVERAGE = 2;
        }
     
        private final String[] headers;
     
        /**
         * Construct a new ResultsTreeTableModel.
         *
         * @param node    The root node.
         * @param headers The headers.
         */
        public ResultsTreeTableModel(TreeTableNode node, String[] headers) {
            super(node);
     
            this.headers = headers.clone();
        }
     
        @Override
        public int getColumnCount() {
            return 3;
        }
     
        @Override
        public Object getValueAt(Object node, int column) {
            Object res = "n/a";
     
            if (node instanceof TreeTableNode) {
                TreeTableNode defNode = (TreeTableNode) node;
     
                res = defNode.getValueAt(column);
            }
     
            return res;
        }
     
        @Override
        public String getColumnName(int column) {
            return headers[column];
        }
     
        @Override
        public boolean isCellEditable(Object node, int column) {
            return false;
        }
    }
    En fait, comme on travaille avec des donnnées hierarchisées, on n'a pas besoin de stocker autre chose que l'élément racine dans le modèle.

    Ensuite, on utilise un type spécial pour les nodes, voilà un exemple pour le root node :

    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
    /**
     * The root node of the tree table.
     *
     * @author Baptiste Wicht
     */
    public class MetricsRootNode extends AbstractResultTreeTableNode {
        @Override
        public Object getValueAt(int column) {
            Object res = null;
     
            switch (column) {
                case Columns.NAME:
                    res = "";
                    break;
                case Columns.TOTAL:
                    res = "";
                    break;
                case Columns.AVERAGE:
                    res = "";
                    break;
            }
     
            return res;
        }
    }
    Il suffit donc pour le modèle de créer un noeud root, de lui ajouter les enfants et de faire pareil pour chaque enfant jusqu'au bas de l'arbre. Si tu es familier des notions d'arbre et de tableau, c'est très simple à utiliser.

    En espérant avoir été clair

  5. #5
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Points : 167
    Points
    167
    Par défaut
    En fait je ne sais pas comment utiliser cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    JXTreeTable treeTable = new JXTreeTable(model);
    treeTable.setTreeCellRenderer(new ElementsCellRenderer());
    treeTable.setAutoCreateColumnsFromModel(true);
    treeTable.setSortable(false);
    treeTable.getTableHeader().setReorderingAllowed(false);
    treeTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
    treeTable.setColumnControlVisible(true);
    treeTable.setRootVisible(false);
    treeTable.packAll();
    est-ce qu'elle est à mettre dans un main? J'ai les deux class mais comment les instancier dans un main pour que je puisse exécuter ton code et ainsi avoir un aspect visuel, ça me permettra de mieux comprendre.

  6. #6
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Il faut ajouter le JXTreeTable dans un JScrollPane et ajouter ce dernier à ta fenêtre. C'est la base même de la construction Swing.

    Tu as déjà fait des interfaces avec Swing ? Si ce n'est pas le cas, je te conseille de lire un des tutoriels Swing de Developpez.com. Sinon, le tree table s'utilise comme tout composant Swing.

Discussions similaires

  1. Conseil sur la réalisation d'une interface
    Par sebac dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 28/08/2009, 16h43
  2. Conseil sur l'amélioration d'une interface WPF
    Par wizad dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 23/01/2008, 16h38
  3. Conseil sur la manipulation d'une string?
    Par Jayceblaster dans le forum Delphi
    Réponses: 6
    Dernier message: 13/07/2006, 14h29
  4. Conseil sur l'extraction d'une string dans une string
    Par Mickey.jet dans le forum Delphi
    Réponses: 3
    Dernier message: 02/06/2006, 14h54
  5. Problème sur la réalisation d'une requête
    Par soso78 dans le forum Access
    Réponses: 1
    Dernier message: 06/10/2005, 13h17

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