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 :

JTable sans scrollpane


Sujet :

Composants Java

  1. #1
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut JTable sans scrollpane
    Bonjour je voudrais créer une JTable sans ScrollPane car avec un scrollPane il y a toujours un espace supplémentaire assez large entre le bord de mon tableau et le bas du mon JFrame. Le problème est que sans scrollpane le nom des colonne n'apparait plus. Comment faire pour pour permettre a mon tableau d'avoir un nom de colonne sans JScrollPane? Merci

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

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    JTable table = new JTable(data,colonnes);
    JPanel panel = new JPanel();
    panel .setLayout(new BorderLayout());
    panel .add(table.getTableHeader(), BorderLayout.PAGE_START);
    panel .add(table, BorderLayout.CENTER);

  3. #3
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    > Bonjour je voudrais créer une JTable sans ScrollPane car avec un scrollPane il y a toujours un espace supplémentaire assez large entre le bord de mon tableau et le bas du mon JFrame.

    je veut juste dire que c'est pas une tres bonne idee. si tu explique ton probleme (parce que j'ai rien compri a ce que t'a dit) on peut voir si y'a pas une autre solution :-)

  4. #4
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Salut et merci wichtounet, mon probleme est simplement que je voulais savoir comment créer un tableau sans JScrollPane. Simple comme question non? Bon je vais voir avec le code de wichtounet et je reviendrai surement avec une question un peu plus compliquée.

  5. #5
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    tu aura certainement bcp de probleme sans scrollpane.
    un truc simple c'est deja comment tu vas gerer le probleme quand tu aura trop d'enregistrement a afficher et que tu a plus de place?
    tu va faire toi meme les JScrollBar? gerer tout les event qui vont avec?
    Bonne chance

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

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par bbclone
    tu aura certainement bcp de probleme sans scrollpane.
    un truc simple c'est deja comment tu vas gerer le probleme quand tu aura trop d'enregistrement a afficher et que tu a plus de place?
    tu va faire toi meme les JScrollBar? gerer tout les event qui vont avec?
    Bonne chance
    Dès le moment ou c'est toi qui remplis la JTable et que tu es sûr qu'il ne peut pas y avoir plus de données que de lignes permises par la taille, cela peut être intéressant de l'utiliser sans JScrollPane. J'y ai déja eu recours dans un programme ou j'affichais des données dans un tableau.

  7. #7
    Membre émérite Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Par défaut
    Je venais de poser le problème hier soir.

    Et une solution pour éviter de retirer ton JScrollPane, c'est de régler la taille de celui ci en fonction de la taille de ton tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setPreferredSize(tabel.getPreferredSize());

  8. #8
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Par défaut
    Citation Envoyé par warwink
    Je venais de poser le problème hier soir.

    Et une solution pour éviter de retirer ton JScrollPane, c'est de régler la taille de celui ci en fonction de la taille de ton tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setPreferredSize(tabel.getPreferredSize());
    ouais, pas mal sauf que tu n'auras pas la taille de la table header inclus.
    Ceci de donne la taille de la table hors header, donc la largeur est bonne mais la hauteur ne l'ai pas.

    Moi je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dimension d = new Dimension();
                d.setSize(jTable1.getPreferredSize().getWidth(),jTable1.getPreferredSize().getHeight() + 
                jTable1.getTableHeader().getPreferredSize().getHeight());
                jScrollPane3.setPreferredSize(d);
    Sachant qu'il manque encore un petit quelque chose.

  9. #9
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Euh par contre, si tu utilises un JScrollPane, que tu définis sa preferredSize et que tu appelles la méthode de ta frame, il ne devrait pas y avoir d'espace entre la fin de ta JTable et la fin de ta JFrame...

  10. #10
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Salut,

    moi j ai utilise la methode setscrollableviewportsize(Dimension size) de la classe JTable, je n ai plus de probleme, donc je vais le laisser trankil a sa place le jscrollpane. En fait au depart je n en voulai pas car mon le nombre d enregistrement ne change pas. Mon JTable represente un calendrier.
    voilou, merci a vous.

  11. #11
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    Citation Envoyé par wichtounet
    Dès le moment ou c'est toi qui remplis la JTable et que tu es sûr qu'il ne peut pas y avoir plus de données que de lignes permises par la taille, cela peut être intéressant de l'utiliser sans JScrollPane. J'y ai déja eu recours dans un programme ou j'affichais des données dans un tableau.
    (j'ai pas lu tout la discusion apres ton message ;-) )

    si tu sait combien il y a de ligne permise alors tu peut aussi mettre dans un scrollPane ou tu definis sa taille?

    je ne voit toujours pas de cas ou ce serait mieu de ne pas le mettre dans un scroll pane.

    je vient de tester pour voir ce que visuellement ca donne. ta solution est la meme que si on met dans un scrollpane mais si tu met dans un scroll pane tu as un border autour

    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
     
    import javax.swing.JFrame;
    import javax.swing.JTable;
    import javax.swing.JScrollPane;
    import javax.swing.RowSorter;
    import javax.swing.JPanel;
    import javax.swing.event.TableModelListener;
    import javax.swing.table.TableModel;
    import javax.swing.table.TableRowSorter;
    import java.awt.HeadlessException;
    import java.awt.EventQueue;
    import java.awt.GridBagLayout;
    import java.awt.GridBagConstraints;
    import java.awt.Insets;
    import java.awt.Dimension;
    import java.awt.BorderLayout;
     
    /**
     * @author bebe
     */
    public class MyTableTest extends JFrame {
     
       public MyTableTest() throws HeadlessException {
           setLayout(new GridBagLayout());
           GridBagConstraints gbc = new GridBagConstraints();
           gbc.gridx = GridBagConstraints.REMAINDER;
           gbc.gridy = GridBagConstraints.RELATIVE;
           gbc.weightx = 1.;
           gbc.insets = new Insets(5, 5, 0, 5);
           gbc.fill = GridBagConstraints.HORIZONTAL;
     
     
           MyTableModel myFirstModel = new MyTableModel("table1");
           MyTableModel mySecondModel = new MyTableModel("table2");
           MyTableModel myThirdModel = new MyTableModel("table3");
     
           JTable tableWithoutScrollPane = new JTable(myFirstModel);
           JTable wichtounetTable = new JTable(mySecondModel);
           JTable tableWithScrollPane = new JTable(mySecondModel);
     
     
           /* no scrollpane */
           add(tableWithoutScrollPane, gbc);
     
           /* wichtounet's solution */
           RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(mySecondModel);
           wichtounetTable.setRowSorter(sorter);
           JPanel panel = new JPanel();
           panel.setLayout(new BorderLayout());
           panel.add(wichtounetTable.getTableHeader(), BorderLayout.PAGE_START);
           panel.add(wichtounetTable, BorderLayout.CENTER);
           add(panel, gbc);
     
           /* with scroll pane */
           int preferedHeight = tableWithScrollPane.getTableHeader().getHeight() + tableWithScrollPane.getRowHeight() * tableWithScrollPane.getModel().getRowCount();
           tableWithScrollPane.setPreferredScrollableViewportSize(new Dimension(0, preferedHeight));
           sorter = new TableRowSorter<TableModel>(myThirdModel);
           tableWithScrollPane.setRowSorter(sorter);
           gbc.weighty = 1.0;
           gbc.anchor = GridBagConstraints.NORTH;
           add(new JScrollPane(tableWithScrollPane), gbc);
       }
     
       public static void main(String[] args) {
           EventQueue.invokeLater(new Runnable(){
               public void run() {
                   MyTableTest t = new MyTableTest();
                   t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                   t.setSize(800, 600);
                   t.setLocationRelativeTo(null);
                   t.setVisible(true);
               }
           });
       }
    }

Discussions similaires

  1. JTable sans colonne dans ScrollPane
    Par rtg57 dans le forum Composants
    Réponses: 2
    Dernier message: 29/01/2011, 23h27
  2. [POI & HTML] exporter une JTable sans les balises HTML
    Par vonemya dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 14/01/2010, 10h28
  3. JTable et scrollPane
    Par L4BiN dans le forum Composants
    Réponses: 4
    Dernier message: 31/01/2007, 16h16
  4. [JTable] Un ScrollPane dans une cellule
    Par Colonel Renard dans le forum Composants
    Réponses: 3
    Dernier message: 25/07/2005, 17h54
  5. JTable dans un scrollpane
    Par Scrusher dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 04/05/2004, 21h45

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