es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hacer que JTable se extienda horizontalmente más allá de la ventana de visualización en un JPanel?

Tengo un JTable dentro de un JPanel con 46 columnas. El problema es que no se pueden leer los encabezados de las columnas, y mucho menos las filas subsiguientes. No he podido encontrar fácilmente una forma de extender la tabla más allá del viewport, lo que permitiría el uso de barras de desplazamiento horizontalmente. Aquí está el código que estoy usando para configurar la tabla y el viewport para ella.

private void setupReferencePanel () {
    refTable = new JTable (null, makeHeaderVector ());
    refTable.addMouseListener (new TableListener (presentador));
    refListingPanel = new JPanel ();
    refListingPanel.setLayout (new BorderLayout ());
    refListingPanel.setBorder (BorderFactory.createTitledBorder (“Archivo de referencia”));
    refScroller = new JScrollPane (refTable);
    refScroller.setHorizontalScrollBarPolicy (JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    refTable.setFillsViewportHeight (true);
    //refTable.setFillsViewportWidth (true);
    refListingPanel.add (refScroller, BorderLayout.CENTER);
    refCountLbl = new JLabel (“cantidad de elementos: 0”);
    refSelect = new SelectionPanel (“Selección”);
    refListingPanel.add (refSelect, BorderLayout.PAGE_START);
    refListingPanel.add (refCountLbl, BorderLayout.PAGE_END);
    refTable.setAutoResizeMode (JTable.AUTO_RESIZE_ALL_COLUMNS);
    getContentPane (). add (refListingPanel);
}

private Vector makeHeaderVector () {
    String [] cols = {…}; // matriz oculta de contenidos de cadena
    Vector resultados = new Vector (Arrays.asList (cols));
    return resultados;
}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que está teniendo problemas con la JTable que no puede extenderse más allá del viewport, lo que le impide leer los encabezados de las columnas y cualquier fila posterior. Para solucionar esto, puede intentar establecer refTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); y refScroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); para permitir que la tabla se extienda más allá del viewport. Además, puede intentar establecer refTable.setFillsViewportWidth(true); para asegurarse de que la tabla siempre tenga el mismo ancho que el viewport.

Comments are closed.