JTable dentro de JScrollPane: melhor altura para desabilitar barras de rolagem

Eu estou usando o seguinte código para criarJTable dentroJScrollPane para mostrar cabeçalhos de coluna

JTable não mostrará cabeçalhos de coluna

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);

O problema é que eu preciso calcular umaltura paraJScrollPane então o todoJTable pode ser visível eJScrollBars não aparecerá. Como eu posso fazer isso?

num muda de 2 para 4 e se for 4, as barras de rolagem aparecem.width está consertado.

questionAnswers(3)

yourAnswerToTheQuestion