Establecer un Width a las columnas del JTable en Java

publicado por: Anonymous

Me gustaría anchar mas las columnas del JTable porque la información presentada se ve muy pegada y no se muestra completa, hay que ajustarlo manualmente para poder visualizar todo el contenido.

Si yo estuviera usando model.addColumn("Nombre");, yo podría usar table.getColumnModel().getColumn(0).setPreferredWidth(30); pero, no hago uso de esto.

Código de mi JTable:

// Estableciendo el título de las columnas del JTable
String[] columnas = {"#", "Tipo", "Franja", "Origen", "Destino", "Duracion", "Precio"};

// Creando un DefaultTableModel
DefaultTableModel model = new DefaultTableModel(null, columnas);

// Creando el JTable y asignandole el DefaultTableModel
JTable table = new JTable(model);

// Agregar filas al JTable leyendo la base de datos
String showTableSQL = "SELECT * FROM llamadas";
Connection conn = null;
Statement st = null;
ResultSet rs = null;
Object[][] filas = null;

                        try {
                            conexion = new ConexionBD();
                            conn = conexion.getConnection();
                            st = conn.createStatement();
                            rs = st.executeQuery(showTableSQL);

                            int numColumnas = rs.getMetaData().getColumnCount(); // Saber la cantidad de columnas que existen
                            int numFilas = 0;
                            while (rs.next()) {
                                numFilas++;
                            }
                            filas = new Object[numFilas][numColumnas];
                            rs.beforeFirst();

                            int contadorTmp = 0;
                            while (rs.next()) {
                                filas[contadorTmp][0] = Integer.toString(rs.getInt(1));     // ID
                                filas[contadorTmp][1] = rs.getString(2);
                                filas[contadorTmp][2] = rs.getString(3);
                                filas[contadorTmp][3] = String.valueOf(rs.getString(4)).replaceFirst("(\d{3})(\d{3})(\d+)", "($1) $2-$3");
                                filas[contadorTmp][4] = String.valueOf(rs.getString(5)).replaceFirst("(\d{3})(\d{3})(\d+)", "($1) $2-$3");
                                filas[contadorTmp][5] = Integer.toString(rs.getInt(6));
                                filas[contadorTmp][6] = Double.toString(rs.getDouble(7));
                                contadorTmp++;
                            }

                        } catch (SQLException errorSQL) { errorSQL.printStackTrace(); }
                            finally { 
                                try { if (rs != null) rs.close(); } catch (Exception errorRS) { errorRS.printStackTrace(); }
                                try { if (st != null) st.close(); } catch (Exception errorST) { errorST.printStackTrace(); }
                                try { if (conn != null) conn.close(); } catch (Exception errorCONN) { errorCONN.printStackTrace(); }
                            }

                        DefaultTableModel model = new DefaultTableModel(filas, columnas);
                        table.setModel(model);

He tratado de investigar una forma de establecer un Width a cada columna en este caso pero, no encuentro nada.

Cualquier ayuda será bien recibida.

solución

Búscalo por su identificador. Por ejemplo para la segunda columna llamada Tipo sería:

table.getColumn("Tipo").setPreferredWidth(30);

Este método usa equals para ver si coincide con algún identificador, según la documentación de java, pasado en el objeto columnas.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *