J'ai le code suivant pour instancier une JTable: la table fournit le bon nombre de lignes et de colonnes, mais il n'y a aucune trace des titres en haut 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.
Placez votre JTable
dans un JScrollPane
. Essaye ça:
add(new JScrollPane(scrTbl));
La principale différence entre cette réponse et la réponse acceptée est l'utilisation de setViewportView()
au lieu de add()
.
Comment mettre JTable
dans JScrollPane
en utilisant Eclipse IDE:
JScrollPane
via l'onglet Conception.JScrollPane
à la taille désirée (s'applique à la mise en page absolue).JTable
au-dessus de JScrollPane
(zone d'affichage).Dans Structure> Composants, table
devrait être un enfant de scrollPane
.
Le code généré ressemblerait à ceci:
JScrollPane scrollPane = new JScrollPane();
...
JTable table = new JTable();
scrollPane.setViewportView(table);
Comme indiqué dans les réponses précédentes, la méthode "normale" consiste à l'ajouter à un JScrollPane, mais parfois vous ne voulez pas qu'il défile (ne me demandez pas quand :)). Ensuite, vous pouvez ajouter le TableHeader vous-même. Comme ça:
JPanel tablePanel = new JPanel(new BorderLayout());
JTable table = new JTable();
tablePanel.add(table, BorderLayout.CENTER);
tablePanel.add(table.getTableHeader(), BorderLayout.NORTH);
public table2() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 485, 218);
setTitle("jtable");
getContentPane().setLayout(null);
String data[][] = { { "Row1/1", "Row1/2", "Row1/3" },
{ "Row2/1", "Row2/2", "Row2/3" },
{ "Row3/1", "Row3/2", "Row3/3" },
{ "Row4/1", "Row4/2", "Row4/3" }, };
String header[] = { "Column 1", "Column 2", "Column 3" };
// Table
JTable table = new JTable(data,header);
// ScrollPane
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBounds(36, 37, 407, 79);
getContentPane().add(scrollPane);
}
}
essaye ça!!