Tengo el siguiente código para crear una instancia de JTable: la tabla aparece con el número correcto de filas y columnas, pero no hay señales de los títulos encima de las columnas.
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
...
}
Al comparar esto con otro código de creación de tablas, no veo ningún paso que falte, pero algo debe estar ausente.

La principal diferencia entre esta respuesta y la respuesta aceptada es el uso de en
setViewportView()lugar deadd().¿Cómo poner
JTableenJScrollPaneel uso de Eclipse IDE:JScrollPanecontenedor a través de la pestaña Diseño.JScrollPaneal tamaño deseado (se aplica al diseño absoluto).JTablecomponente encima deJScrollPane(Área de ventana gráfica).En Estructura> Componentes,
tabledebe ser hijo descrollPane.El código generado sería algo como esto:
JScrollPane scrollPane = new JScrollPane(); ... JTable table = new JTable(); scrollPane.setViewportView(table);fuente
Como se dijo en las respuestas anteriores, la forma 'normal' es agregarlo a un JScrollPane, pero a veces no desea que se desplace (no me pregunte cuándo :)). Luego, puede agregar el TableHeader usted mismo. Me gusta esto:
JPanel tablePanel = new JPanel(new BorderLayout()); JTable table = new JTable(); tablePanel.add(table, BorderLayout.CENTER); tablePanel.add(table.getTableHeader(), BorderLayout.NORTH);fuente
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); }}
¡¡prueba esto!!
fuente
getContentPane().add(table);no tiene sentido aquí. Aparte de eso: esta respuesta no agrega nada en comparación con las respuestas existentes.