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 :

[Swing] Placer une JTable à un endroit précis


Sujet :

Composants Java

  1. #1
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 253
    Points
    28 253
    Par défaut [Swing] Placer une JTable à un endroit précis
    *je hais java*

    bonjour,

    Etant un grand adepte des interface Web comme "windows", en C++, .Net ou autre, je dois avouer que je galère pas mal avec Java.
    Je passerai outre l'aspect esthétique de la chose, je ne souhaite ici qu'avoir une appli fonctionnelle.

    Objectif, une JTable a 2 colonnes avec un menu contextuel pour supprimer une ligne. A la limite, le menu contextuel, ca devrait etre de mon niveau. Par contre, la JTable...

    Voici la tete de mon appli, une fenetre principale avec un Tabcontrol qui prend toute la place (dock fill). Sur un des onglets, j'aimerai placer des boutons et une JTable.
    Les boutons, textfields, etc, ca marche mais la JTable...

    j'ai testé deux solutions
    Solution 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Object[][] donnees = new Object[0][0] ; // ici, je devrais pas mettre[0][2]?
    Object[] entetes = new Object[] {"col1","col2" };
    pwet = new javax.swing.table.DefaultTableModel(donnees, entetes);
    JTable tblZone = new JTable(pwet );
     tblZone.setBounds(0, 200, 400, 250);
    pnlQuery.add(tblZone);
    effet:
    un carré blanc placé ou je veux mais sans header

    solution 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Object[][] donnees = new Object[0][0] ;
            Object[] entetes = new Object[] {"col1","col2" };
            pwet = new javax.swing.table.DefaultTableModel(donnees, entetes);
            JTable tblZone = new JTable(pwet );
            JScrollPane scroll_Stock = new JScrollPane(tblZone,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);    
            pnlQuery.add(scroll_Stock);
    effet => rien

    Par contre, si je crée un nouvel onglet contenant uniquement le JScrollPane alors j'obtiens un onglet avec ma Jtable avec headers qui prend tout l'onglet. ca m'interesse pas.

    Comme je comprends pas les histoires de Panels java (je suis en setlayout(null) sur pnlQuery), quelqu'un pourrait me dire ce qu'il manque à la solution 1 ou 2 pour avoir cette Jtable à la taille que je veux et la position que je veux?

    d'avance merci

    *je hais java*

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Sol1: pour avoir les headers d'une JTable ilfaut soit qu'elle soit dans un JScrollPane, soit les ajouter manuellement à ton panel ce qui s'avère ch***, en particulier avec un Layout aussi peu flexible qu'un NullLayout.


    Sol2: bah là tu ne fais pas de setBounds sur ton JScrollPane donc forcément le comportement va être aléatoire.

    Mais bon en général le NullLayout c'est mal, aucun redimensionnement, pas de gestion de la baseline, super pas souple à l'utilisation, vas y pour aligner à droite les labels dans un formulaire.

    Alors qu'avec un FormLayout, un GridBagLayout bien maîtrisé ou encore en utilisant matisse (le guibuilder de netbeans) tu pourras faires des choses plus que correctes et souples.

    ++

    Et en ce concerne l'aspet esthétique => Looks & Feels il en existe un paquet.

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 253
    Points
    28 253
    Par défaut
    je suis tout a fait d'accord que la suppression de gestion de calque "automatique" c'est un retour en arrière au niveaux des fonctionnalités.
    Malheureusement, j'ai pas vraiment le temps de comprendre comment ca marche, je pour desiner avec matisse ou autre, on va dire que je developpe avec notepad donc un RAD comme eclispe(module) ou netbeans, j'ai pas.

    En fait j'avais mis un setbounds pour pour mon Jscroll mais pas pour ma table.
    ceci marche enfin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Object[][] donnees = new Object[0][0] ;
            Object[] entetes = new Object[] {"Latitude","Longitude" };
            pwet = new javax.swing.table.DefaultTableModel(donnees, entetes);
            JTable tblZone = new JTable(pwet);
            tblZone.setBounds(0, 0,200,100);
            JScrollPane scroll = new JScrollPane(tblZone,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
            scroll.setBounds(0, 200, 400, 250);
            pnlQuery.add(scroll);
    edit: bizarre, sans le setbounds de la jtable, ca marche quand meme. j'avais pourtant testé

    pour l'esthétique, je pensais plutôt à des composants simples. pour placer une image, j'utilise une class perso (mais je sais plus pourquoi ), mais placer un bouton qui contient une image alignée a gauche ou droite, qui se regle facilement, ca n'existe pas. Avoir un webbrowser intégré. Là, je demande la lune, bien que Jrex me semble pas mal. On va dire que pour ce dernier, le multiplateforme n'aide pas mais bon, niveau GUI, je trouve qu'il manque bcp de choses à Java pour en faire des grosses applis user-friendly. mais bon, on ne va pas debattre

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu pourrais faire un dessin vite fait de ce que tu veux, ça ne doit pas être la mort à réaliser au vu du nombre de composants que tu as à placer

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

Discussions similaires

  1. [Swing] Afficher une JTable speciale en java
    Par benssj5 dans le forum Composants
    Réponses: 6
    Dernier message: 12/03/2013, 20h21
  2. Revenir sur une page à un endroit précis
    Par toffff dans le forum Langage
    Réponses: 7
    Dernier message: 21/03/2007, 11h35
  3. Placer du flash à un endroit précis
    Par Ben44 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 09/12/2006, 13h49
  4. [SWING] remplir une jtable avec une matrice de double
    Par Psykorel dans le forum Composants
    Réponses: 3
    Dernier message: 04/01/2006, 14h14
  5. Placer une image à un endroit identifié par ses coordonnées
    Par sempire dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 16/11/2005, 22h19

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