JTable non mostrerà le intestazioni di colonna

Ho il seguente codice per creare un’istanza di una tabella: la tabella presenta il numero giusto di righe e colonne, ma non vi è alcun segno dei titoli in cima alle colonne.

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 ... } 

Confrontandolo con altri codici di creazione di tabelle, non vedo passaggi mancanti, ma qualcosa deve essere assente.

Metti il ​​tuo JTable all’interno di un JScrollPane . Prova questo:

 add(new JScrollPane(scrTbl)); 

La principale differenza tra questa risposta e la risposta accettata è l’uso di setViewportView() invece di add() .

Come inserire JTable in JScrollPane usando l’IDE di Eclipse:

  1. Crea JScrollPane contenitore JScrollPane tramite la scheda Progettazione.
  2. JScrollPane alla dimensione desiderata (si applica al layout assoluto).
  3. Trascina e rilascia il componente JTable sopra JScrollPane (area Viewport).

In Structure> Components, table dovrebbe essere un figlio di scrollPane . inserisci la descrizione dell'immagine qui

Il codice generato sarebbe qualcosa del genere:

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

Come detto nelle risposte precedenti, il modo “normale” è di aggiungerlo a un JScrollPane, ma a volte non si desidera che scorra (non chiedermi quando :)). Quindi puoi aggiungere TableHeader tu stesso. Come questo:

 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); } 

}

prova questo!!