Pregunta JTable no mostrará encabezados de columna


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 ningún signo 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
...

}

Comparando esto con otro código de fabricación de tablas, no veo ningún paso que falte, pero algo debe estar ausente.


73
2018-02-23 18:47


origen


Respuestas:


Ponga su JTable dentro de una JScrollPane. Prueba esto:

add(new JScrollPane(scrTbl));

158
2018-02-23 19:04



La principal diferencia entre esta respuesta y la aceptada es el uso de setViewportView() en lugar de add().

Cómo poner JTable en JScrollPane usando Eclipse IDE:

  1. Crear JScrollPane contenedor a través de la pestaña Diseño.
  2. Tramo JScrollPane al tamaño deseado (se aplica a Absolute Layout).
  3. Arrastrar y soltar JTable componente en la parte superior de JScrollPane (Área de la vista).

En Estructura> Componentes, table debería ser un hijo de scrollPane. enter image description here

El código generado sería algo como esto:

JScrollPane scrollPane = new JScrollPane();
...

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

20
2018-03-10 14:42



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

7
2018-06-30 12:01



    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!!


1
2018-06-17 10:34