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 :

Avoir une liste dont les éléments sont un JComboBox suivi d'un JTextField


Sujet :

Composants Java

  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut Avoir une liste dont les éléments sont un JComboBox suivi d'un JTextField
    Bonjour,

    Dans une fenetre graphique, j'affiche un certain nombre de composants:
    - un JLabel suivi d'un JTextField
    - un JLabel suivi d'un JComboBox
    - un JLabel suivi d'un JComboBox suivi d'un JTextField
    - un JLabel suivi d'un JTextArea

    En fait, la troisième ligne composé du JLabel + JComboBox + JTextField représente une condition.
    Par exemple, on aura :
    pour le JLabel : "Conditions:"
    pour le JComboBox, une série de choix : "Si la langue est égale à", "Si le type de document est égale à"
    pour le JTextField, l'utilisateur mettra la valeur qu'il souhaite (par exemple "FR")

    J'aimerais pouvoir avoir une sorte de composant, me permettant d'exprimer une liste de conditions, cad que par exemple après avoir choisi un élément de mon JComboBox + inséré une valeur dans le JTextField, que je puisse cliquer sur un petit "+", et à ce moment là, afficher une autre JComboBox + JTextField, juste en dessous de la première (et eventuellement pouvoir en supprimer avec un bouton "-").

    Dans quel genre de composant swing, je pourrais encapsuler ma JComboBox + JTextField, pour avoir une liste de JComboBox + JTextField ?

    Merci :-)

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Pourquoi pas un JPanel ?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    Tu pourrais créer une nouvelle class qui hériterais de JPanel, dans lequel tu y mettrais tes 3 composants (voir 2 si tu ne veux pas remettre le JLabel) et y affecter les actions directement.

    Tu peux aussi utiliser un système de Listener pour rajouter tes composants depuis ta class principale.

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut re
    Re,

    Imaginons que dans cette classe héritant de JPanel contient mon JComboBox et JTextField.

    J'ai toujours du mal à voir comment cette classe pourrait représenter la liste de JComboBox+JTextField.

    Est-ce que vous pourriez détailler un peu plus ?

    Je vous remercie :-)

  5. #5
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    tu peux le faire dans un jpanel comme indiqué plus haut, le tout dans un jscrollpane.

    tu peux le faire aussi dans un jtable, ce serait peut-être mieux.

  6. #6
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Citation Envoyé par thierry_b Voir le message
    J'ai toujours du mal à voir comment cette classe pourrait représenter la liste de JComboBox+JTextField
    Le panel encapsulerait une JComboBox+JTextField. Et la liste de panel qui encapsule une JComboBox+JTextField serait un autre objet.

    Il est aussi possible de faire cela dans une Jtable qui possèderait 2 colonnes, une pour ta combo et l'autre pour le textfield. Ce serait d'ailleurs peut-être plus simple, car la jtable te permet d'ajouter ou supprimer les "lignes" facilement (c'est prévu pour).

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut Re
    Ok, merci.

    Je vais regarder tout ça :-)

  8. #8
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut Re
    Re,

    J'ai plusieurs soucis:

    - Pour le moment, j'ai essayé de faire une simple table de deux lignes contenant du texte pour commencer, et je vois qu'il me crée une table beaucoup plus grande en hauteur, on peut l'adapter en fonction du nombre de lignes ?

    - Si je veux une tablea à deux colonnes, avec en contenu, une JCOmboBox, et un JTextField, il va donc falloir personnaliser le rendu des cellules de la table non?

    Merci :-)

  9. #9
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    oui et oui.

    le jtable n'est pas simple à mettre en oeuvre. il faut travailler dessus longtemps pour le maitriser et suivre un bon tuto.

  10. #10
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Tu trouveras tout sur les Jtable dans les tuto de Sun, y compris comment insérer un combo.

  11. #11
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut Re
    Re,

    J'ai réussi à insérer un combo.

    Par rapport à la hauteur de ma table, j'ai réussi à la régler comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private Dimension getPreferredScrollableViewportSize(JTable table)
        {
            Dimension size = table.getPreferredScrollableViewportSize();
            return new Dimension(Math.min(getPreferredSize().width, size.width), table.getRowHeight() * table.getRowCount());
        }
    puis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.setPreferredScrollableViewportSize(getPreferredScrollableViewportSize(table));
    Par contre, j'aimerais pouvoir redimensionner la largeur de chaque colonne, en fonction de la cellule qui a le plus de contenus, mais ca ne marche pas :-(

    J'ai essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void initColumnSizes(JTable table) {
            TableColumn column;
            for (int i = 0; i < 2; i++) {
                column = table.getColumnModel().getColumn(i);
                column.sizeWidthToFit();
            }
        }
    mais ca ne fait rien...

    Apparemment, en faisant ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        private void initColumnSizes(JTable table) {
            TableColumn column;
            column = table.getColumnModel().getColumn(0);
            column.setPreferredWidth(200);
        }
    on y arrive, mais j'aimerais pouvoir rendre ce chiffre dynamique afin de redimensionner chaque colonne en fonction de sa cellule ayant la plus grande largeur parmi toutes.

    Une idée?

    Merci :-)

  12. #12
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    tu peux parcourir les cellules de ta colonne pour déterminer celle qui est la plus large.

  13. #13
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Par défaut re
    Ok, merci :-)

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

Discussions similaires

  1. Centrer une page dont les éléments sont positionnés en absolu
    Par Rodrigue dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 12/11/2011, 22h54
  2. Réponses: 5
    Dernier message: 08/04/2009, 12h15
  3. E-Mail dont les éléments sont fonction d'une variable
    Par j.p.mignot dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/01/2008, 18h52
  4. Réponses: 13
    Dernier message: 06/06/2007, 19h58
  5. Réponses: 19
    Dernier message: 04/06/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