Título explica la pregunta. ¿Cómo puedo hacer eso fácilmente?¿Cómo cambiar la altura del encabezado JTable?
16
A
Respuesta
37
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);
}
}
-1
También puede utilizar una anchura muy grande al establecer la dimensión de cabeza preferido, que hacen pivotar truncar como por los anchos requeridos en el modelo de columna.
tableHeader.setPreferredSize(new Dimension(10000, HEADER_HEIGHT));
+0
por favor, lea las respuestas a [esta pregunta] (http://stackoverflow.com/questions/7229226/should-i-avoid-the-use-of-setpreferredmaximumminimumsize-methods-in-java-swi/): – bobndrew
1
probar este .....
if jtable attached to scrollpane
then
table.getTableHeader().setPreferredSize(
new Dimension(scrollpane.getwidth(),height)
);
else
table.getTableHeader().setPreferredSize(
new Dimension(width,height)
);
0
Prueba este
JTableHeader th = table.getTableHeader();
th.setPreferredSize(new Dimension(100, 100));
Cuestiones relacionadas
- 1. ¿Cómo puedo cambiar la fuente del encabezado de JTable?
- 2. JTable cambiar la altura de la fila dinámicamente
- 3. TCPDF - ¿Cómo ajustar la altura del encabezado?
- 4. JTable sin encabezado
- 5. ¿Cómo puedo cambiar el color de fondo del encabezado de JTable?
- 6. JTable encabezado de fila Implementación
- 7. ¿Cómo obtengo la altura del encabezado de un Listview? C#
- 8. ¿Cómo se establece el encabezado para JTable?
- 9. Cambiando dinámicamente el texto del encabezado de columna en JTable
- 10. Cambiar ubicación del encabezado GridView
- 11. CSS 100% altura + encabezado con altura estática;
- 12. Cómo detectar y cambiar la altura del div en jQuery
- 13. ¿Cómo cambiar la fuente del encabezado de TabItem sin cambiar la fuente del contenido?
- 14. Notificación para cambiar la altura del teclado del iPad
- 15. Cambiar el color de la celda JTable
- 16. cómo cambiar la altura desplegable en spinner
- 17. Cambiar la altura de la ventana del Gstatus de Fugitive
- 18. JTable cómo cambiar color de fondo
- 19. JTable de encabezado de columna no visible
- 20. Cómo implementar jtable con altura de fila variable
- 21. ¿Es posible cambiar la altura del texto en línea, no solo la altura de la línea?
- 22. Cambiar el ancho y la altura del control deslizante jQuery
- 23. ¿Cómo cambiar la altura del iframe en función del contenido dinámico dentro del iframe?
- 24. Cambiar la altura del botón ttk en Python
- 25. Cambiar UINavigationBar Altura
- 26. ¿Cómo cambiar la altura ENTRE las secciones en UITableView AGRUPADO?
- 27. JQuery: Cambiar la altura según otro elemento
- 28. Cambiar la altura de una UITableViewCell
- 29. cómo cambiar la altura y el ancho del diseño del marco de forma programática?
- 30. ¿Cómo cambiar la altura de la banda de forma dinámica?
+1 ejemplo maravilloso para _No_ usando setXXSize :-) – kleopatra
mKorbel THX :), kleopatra "no usar setXXSize "eso es seguro. – aterai
@aterai Esa es una buena, muy agradable. Utilicé el método "malo" antes y me enfrenté con el problema que has mostrado anteriormente. En realidad no pude entender cuál fue el motivo ... Muchas gracias, ¡aprecia tu esfuerzo! – Anubis