JTable dentro de JScrollPane: la mejor altura para deshabilitar las barras de desplazamiento

Estoy usando el siguiente código para crearJTable dentroJScrollPane para mostrar los encabezados de columna

JTable no mostrará encabezados de columna

String[] columnNames = {"header1", "header2", "header2", "header3"};
Object[][] data = new Object[num][4];
//feed values into data using for

JTable chart = new JTable(data, columnNames);
chart.setShowVerticalLines(false);
chart.setEnabled(false);
chart.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

JScrollPane sp = new JScrollPane(chart);
sp.setPreferredSize(new Dimension(width, chart.getHeight() + 5));
panel.add(sp);

El problema es que necesito calcular unaaltura paraJScrollPane así que todoJTable puede ser visible yJScrollBars no aparecerá. ¿Cómo puedo hacer eso?

num cambia de 2 a 4 y si es 4, aparecen las barras de desplazamiento.width está arreglado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta