titulos poner nombre las encabezado como columnas color centrar cambiar cabecera automaticamente ajustar java swing jtable jtableheader preferredsize

java - poner - ¿Cómo cambiar la altura del encabezado JTable?



jtable java (6)

Título explica la pregunta. ¿Cómo puedo hacer eso fácilmente?


En lugar de anular JViewport.getPreferredSize como en respuesta total, puede establecer el ancho preferido.

JScrollPane scroll = new JScrollPane(table2); scroll.getColumnHeader().setPreferredSize(new Dimension(0, HEADER_HEIGHT));

JScrollPane ignora el ancho del encabezado de la columna, por lo que puede establecer cero aquí.


Prueba esto

JTableHeader th = table.getTableHeader(); th.setPreferredSize(new Dimension(100, 100));


También puede utilizar un ancho muy grande al configurar la dimensión de encabezado preferida, que se trunca en función del ancho requerido en el modelo de columna.

tableHeader.setPreferredSize(new Dimension(10000, HEADER_HEIGHT));


prueba esto.....

if jtable attached to scrollpane then table.getTableHeader().setPreferredSize( new Dimension(scrollpane.getwidth(),height) ); else table.getTableHeader().setPreferredSize( new Dimension(width,height) );


import java.awt.*; import java.awt.event.*; import java.util.List; import java.util.Arrays; import javax.swing.*; import javax.swing.table.*; public class TableHeaderHeightTest { private static int HEADER_HEIGHT = 32; private JTable makeTable() { JTable table = new JTable(new DefaultTableModel(2, 20)); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); return table; } public JComponent makeUI() { JPanel p = new JPanel(new GridLayout(2,1)); JTable table1 = makeTable(); //Bad: >>>> JTableHeader header = table1.getTableHeader(); //Dimension d = header.getPreferredSize(); //d.height = HEADER_HEIGHT; //header.setPreferredSize(d); //addColumn case test header.setPreferredSize(new Dimension(100, HEADER_HEIGHT)); p.add(makeTitledPanel("Bad: JTableHeader#setPreferredSize(...)", new JScrollPane(table1))); //<<<< JTable table2 = makeTable(); JScrollPane scroll = new JScrollPane(table2); scroll.setColumnHeader(new JViewport() { @Override public Dimension getPreferredSize() { Dimension d = super.getPreferredSize(); d.height = HEADER_HEIGHT; return d; } }); // //or // table2.setTableHeader(new JTableHeader(table2.getColumnModel()) { // @Override public Dimension getPreferredSize() { // Dimension d = super.getPreferredSize(); // d.height = HEADER_HEIGHT; // return d; // } // }); p.add(makeTitledPanel("Override getPreferredSize()", scroll)); final List<JTable> list = Arrays.asList(table1, table2); JPanel panel = new JPanel(new BorderLayout()); panel.add(p); panel.add(new JButton(new AbstractAction("addColumn") { @Override public void actionPerformed(ActionEvent e) { for(JTable t: list) { t.getColumnModel().addColumn(new TableColumn()); JTableHeader h = t.getTableHeader(); Dimension d = h.getPreferredSize(); System.out.println(d); } } }), BorderLayout.SOUTH); panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); return panel; } private static JComponent makeTitledPanel(String title, JComponent c) { JPanel p = new JPanel(new BorderLayout()); p.add(c); p.setBorder(BorderFactory.createTitledBorder(title)); return p; } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { createAndShowGUI(); } }); } public static void createAndShowGUI() { JFrame f = new JFrame(); f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); f.getContentPane().add(new TableHeaderHeightTest().makeUI()); f.setSize(320, 320); f.setLocationRelativeTo(null); f.setVisible(true); } }


Font bigFont = new Font("sansserif", Font.PLAIN, 24); // or whatever myTable.getTableHeader().setFont(bigFont);

Esta es una forma sencilla de aumentar el tamaño preferido del TableHeader. Aumentará la altura del encabezado, pero si los nombres de sus columnas son demasiado largos, es posible que no se ajusten a lo ancho.