82 votes

JTable ne montrera pas les en-têtes de colonnes

J'ai le code suivant pour instancier une JTable: la table fournit le bon nombre de lignes et de colonnes, mais aucun titre ne figure sur les titres au-dessus des colonnes.

 public Panel1()
{
int  nmbrRows;

    setLayout(null);
    setBackground(Color.magenta);
    Vector colHdrs;

    //create column headers

    colHdrs = new Vector(10);
    colHdrs.addElement(new String("Ticker"));

//more statements like the above to establish all col. titles       

    nmbrRows = 25;
    DefaultTableModel tblModel = new DefaultTableModel(nmbrRows, colHdrs.size());
    tblModel.setColumnIdentifiers(colHdrs);

    scrTbl = new JTable(tblModel);
    scrTbl.setBounds(25, 50, 950, 600);
    scrTbl.setBackground(Color.gray);
    scrTbl.setRowHeight(23);    
    add(scrTbl);


//rest of constructor
...

}
 

En comparant cela à un autre code permettant de créer des tables, je ne vois aucune étape manquante, mais quelque chose doit être absent.

Merci d'avance pour votre aide.

178voto

Erkan Haspulat Points 4707

Mettez votre JTable dans un JScrollPane . Essaye ça:

 add(new JScrollPane(scrTbl));
 

24voto

ohtph Points 99

NOTE: Cette réponse fonctionne également. La principale différence étant l'utilisation de setViewportView() au lieu de la méthode add().

Malheureusement, il a été downvoted par un amer membre que j'ai marqué et dont les commentaires grossiers ont été supprimés par les modérateurs. Veuillez ne pas être induit en erreur.

Comment mettre de la JTable dans JScrollPane à l'aide d'Eclipse:

  1. Créer JScrollPane conteneur via l'onglet Conception.
  2. Stretch JScrollPane à la taille désirée (s'applique à la Disposition Absolue).
  3. Faites glisser et déposez composant JTable sur le dessus de JScrollPane (zone de Fenêtre d'affichage).

Dans la Structure > Composants, table doit être un enfant de scrollPane. enter image description here

Le code généré serait quelque chose comme:

JScrollPane scrollPane = new JScrollPane();
...

JTable table = new JTable();
scrollPane.setViewportView(table);

-1voto

Guillaume Points 3232

Si les noms de colonnes et le nombre de lignes sont codés en dur, je vous conseillerais d'utiliser le constructeur JTable qui prend un tableau de noms de colonnes au lieu de créer un modèle que vous ne réutilisez pas:

JTable (Object [] [] rowData, Object [] columnNames) Construit une JTable pour afficher les valeurs du tableau à deux dimensions, rowData, avec les noms de colonne, columnNames.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X