Javax Swing Java by API

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