Java - Columnas del jtable fijas

 
Vista:
Imágen de perfil de Jose A.
Val: 14
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Columnas del jtable fijas

Publicado por Jose A. (8 intervenciones) el 04/07/2021 13:56:24
saludos canal,
sigo aprendiendo java y tropezando con igual frecuencia.
Os pido una ayuda, porque he creado un jtable con las columnas fijas, pero cuando se agregan los datos de cada una, cambian de dimension (no desconocida :-D) , las columnas son object y el contenido tambien.
ArrayList <registro> registros = new ArrayList();
DefaultTableModel grilla = new DefaultTableModel(new Object[][]{}, new String[],"INDICE","SERIAL","ESTADO","ULT.COMP.","APUNTE1","APUNTE2","APUNTE3"});
DefaultTableCellRenderer Alinear = new DefaultTableCellRenderer();

agradezco cualquier ayuda. thx.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Columnas del jtable fijas

Publicado por Kabuto (1381 intervenciones) el 04/07/2021 21:49:43
¿Te refieres al ancho de las columnas?

No soy un experto con las JTable y la verdad es que afinarlas para que queden a nuestro gusto a veces tiene tarea.

Hace poco, en otro foro, publiqué un ejercicio donde precisamente estuve investigando la forma de establecer un ancho concreto para cada columna.

La solución con la que di, al crear mi propia clase JTable, es la siguiente.
Marco en negrita las líneas donde se desactiva el "auto resize" y se establece un ancho para cada columna.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private class MiTabla extends JTable {
 
    public MiTabla(String[][] datos, String[] nombresColumna) {
        super(new DefaultTableModel(datos, nombresColumna) {
            @Override
            public boolean isCellEditable(int row, int column) {
                return false; //Las celdas de esta tabla NO serán editables
            }
        });
        //Pedimos al render que centre los textos en sus celdas.
        DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
        centerRenderer.setHorizontalAlignment(SwingConstants.CENTER);
        setDefaultRenderer(Object.class, centerRenderer);
        //Cambiamos alguna fuente y color para los datos de la tabla
        setFont(new Font("Verdana", Font.PLAIN , 12));
        setForeground(Color.BLUE);
        //También cambiamos estilo de fuente a la cabecera
        JTableHeader cabecera = getTableHeader();
        cabecera.setFont(new Font("Verdana", Font.BOLD , 14));
        setAutoResizeMode(AUTO_RESIZE_OFF);
        getColumnModel().getColumn(0).setPreferredWidth(135);
        getColumnModel().getColumn(1).setPreferredWidth(160);
        getColumnModel().getColumn(2).setPreferredWidth(80);
        getColumnModel().getColumn(3).setPreferredWidth(50);
        getColumnModel().getColumn(4).setPreferredWidth(50);
        getColumnModel().getColumn(5).setPreferredWidth(130);
    }
}

Esas dimensiones en píxeles, suman (aproximadamente, pues hay que descontar lo que ocupa el deslizador vertical y los bordes aplicados) el ancho del ScrollPane donde coloco la tabla:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public PanelTabla(ArrayList<Caso> casosCovid) {
    casos = casosCovid;
    construirTabla();
 
    JScrollPane sp = new JScrollPane(tablaCovid);
    sp.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
    sp.setPreferredSize(new Dimension(630, 300));
    sp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
 
    add(sp);
    setBorder(BorderFactory.createCompoundBorder(
            BorderFactory.createEmptyBorder(10, 10, 10, 10),
            BorderFactory.createRaisedSoftBevelBorder()));
}


Así luego en la interfaz del programa, cada columna tenía un ancho más adecuado al texto que tienen que mostrar:

Registro-Covid
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jose A.
Val: 14
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Columnas del jtable fijas

Publicado por Jose A. (8 intervenciones) el 05/07/2021 09:19:43
Agradezco tu ayuda, al final lo que hize fue dar la anchura de cada columna, despues de insertar los datos.
Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar