Java tutorial
import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JViewport; import javax.swing.UIManager; public class MainClass { public static void main(String args[]) { Object rows[][] = { { "A", "a" }, { "B", "b" }, { "E", "e" } }; Object headers[] = { "Upper", "Lower" }; JTable table = new JTable(rows, headers); table.setTableHeader(null); JScrollPane scrollPane = new JScrollPane(table); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(scrollPane, BorderLayout.CENTER); frame.setSize(300, 150); frame.setVisible(true); } } class HeaderlessTable extends JTable { public HeaderlessTable(Object rowData[][], Object columnNames[]) { super(rowData, columnNames); } protected void configureEnclosingScrollPane() { Container container = getParent(); if (container instanceof JViewport) { Container viewParent = container.getParent(); if (viewParent instanceof JScrollPane) { JScrollPane scrollPane = (JScrollPane) viewParent; JViewport viewport = scrollPane.getViewport(); if (viewport == null || viewport.getView() != this) { return; } scrollPane.setBorder(UIManager.getBorder("Table.scrollPaneBorder")); } } } }