// -*- mode:java; encoding:utf-8 -*-
// vim:set fileencoding=utf-8:
// @homepage@

package example;

import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.basic.BasicSplitPaneDivider;
import javax.swing.plaf.basic.BasicSplitPaneUI;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public final class MainPanel extends JPanel {
  private final String[] columnNames = {"String", "Integer", "Boolean"};
  private final Object[][] data = {
    {"aaa", 12, true}, {"bbb", 5, false},
    {"CCC", 92, true}, {"DDD", 0, false}
  };
  private final TableModel model = new DefaultTableModel(data, columnNames) {
    @Override public Class<?> getColumnClass(int column) {
      return getValueAt(0, column).getClass();
    }
  };

  private MainPanel() {
    super(new BorderLayout());

    UIManager.put("SplitPane.oneTouchButtonSize", 32);
    UIManager.put("SplitPane.oneTouchButtonOffset", 50);
    UIManager.put("SplitPane.centerOneTouchButtons", true);

    UIManager.put("SplitPaneDivider.border", BorderFactory.createLineBorder(Color.RED, 10));
    UIManager.put("SplitPaneDivider.draggingColor", new Color(0x64_FF_64_64, true));

    JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT) {
      @Override public void updateUI() {
        super.updateUI();
        BasicSplitPaneDivider divider = ((BasicSplitPaneUI) getUI()).getDivider();
        // divider.setBorder(BorderFactory.createMatteBorder(20, 0, 5, 0, Color.RED)); // bug?
        // divider.setBorder(BorderFactory.createLineBorder(Color.RED, 10));
        divider.setBackground(Color.ORANGE);
        for (Component c: divider.getComponents()) {
          if (c instanceof JButton) {
            JButton b = (JButton) c;
            // @see BasicSplitPaneDivider#createLeftOneTouchButton()
            // @see BasicSplitPaneDivider#createRightOneTouchButton()
            // public void paint(Graphics g) {
            //  ... then draw the arrow.
            //  g.setColor(Color.black);
            //  g.fillPolygon(xs, ys, 3);
            //  ...
            // b.setOpaque(false);
            // b.setForeground(Color.BLUE);
            b.setBackground(Color.ORANGE);
          }
        }
      }
    };
    splitPane.setTopComponent(new JScrollPane(new JTable(model)));
    splitPane.setBottomComponent(new JScrollPane(new JTree()));
    splitPane.setOneTouchExpandable(true);
    splitPane.setDividerSize(32);

    BasicSplitPaneDivider divider = ((BasicSplitPaneUI) splitPane.getUI()).getDivider();
    divider.setBackground(Color.ORANGE);
    for (Component c: divider.getComponents()) {
      if (c instanceof JButton) {
        JButton b = (JButton) c;
        b.setBackground(Color.ORANGE);
      }
    }

    add(splitPane);
    setPreferredSize(new Dimension(320, 240));
  }

  public static void main(String[] args) {
    EventQueue.invokeLater(MainPanel::createAndShowGui);
  }

  private static void createAndShowGui() {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
      ex.printStackTrace();
      Toolkit.getDefaultToolkit().beep();
    }
    JFrame frame = new JFrame("@title@");
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.getContentPane().add(new MainPanel());
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }
}

@@ -240,528 +240,54 @@
 UI;%0A
-import javax.swing.table.DefaultTableModel;%0Aimport javax.swing.table.TableModel;%0A%0Apublic final class MainPanel extends JPanel %7B%0A  private final String%5B%5D columnNames = %7B%22String%22, %22Integer%22, %22Boolean%22%7D;%0A  private final Object%5B%5D%5B%5D data = %7B%0A    %7B%22aaa%22, 12, true%7D, %7B%22bbb%22, 5, false%7D,%0A    %7B%22CCC%22, 92, true%7D, %7B%22DDD%22, 0, false%7D%0A  %7D;%0A  private final TableModel model = new DefaultTableModel(data, columnNames) %7B%0A    @Override public Class%3C?%3E getColumnClass(int column) %7B%0A      return getValueAt(0, column).getClass();%0A    %7D%0A  %7D;%0A
+%0Apublic final class MainPanel extends JPanel %7B
 %0A  p
@@ -1807,13 +1807,12 @@
 ble(
-model
+8, 3
 )));

use new JTable(row, column) instead of new JTable(TableModel)