import javax.swing.*; import java.awt.*; import java.awt.event.InputEvent; import java.lang.reflect.InvocationTargetException; /** * ScrollbarCrash. * * @author Hendrik Schreiber */ public class ScrollbarCrash extends JFrame { private final JScrollBar horizontalScrollBar; private final JScrollBar verticalScrollBar; public ScrollbarCrash() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().setLayout(new BorderLayout()); final JTable table = new JTable(); final JScrollPane scrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); horizontalScrollBar = scrollPane.getHorizontalScrollBar(); verticalScrollBar = scrollPane.getVerticalScrollBar(); getContentPane().add(scrollPane, BorderLayout.CENTER); setBounds(100, 100, 300, 300); } public static void main(String[] args) throws AWTException, InvocationTargetException, InterruptedException { final ScrollbarCrash frame = new ScrollbarCrash(); SwingUtilities.invokeLater(() -> frame.setVisible(true)); final Robot robot = new Robot(); robot.setAutoDelay(500); robot.setAutoWaitForIdle(true); robot.delay(1000); clickOnScrollBar(robot, frame.horizontalScrollBar); clickOnScrollBar(robot, frame.verticalScrollBar); SwingUtilities.invokeAndWait(frame::dispose); } private static void clickOnScrollBar(final Robot robot, final JScrollBar scrollBar) { final Point p = new Point(scrollBar.getWidth()/2, scrollBar.getHeight()/2); SwingUtilities.convertPointToScreen(p, scrollBar); robot.mouseMove(p.x, p.y); robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); } }