import javax.swing.*;
import java.awt.*;
import java.lang.reflect.InvocationTargetException;

public class TestJTabbedPane {

    public static JFrame frame;

    public static void main(String[] args) throws InterruptedException, InvocationTargetException {
        SwingUtilities.invokeAndWait(() -> {
            createTestUI();
        });
    }

    public static void createTestUI() {
        frame = new JFrame("Test JTabbedPane Layout Policy");
        JTabbedPane jTabbedPane = new JTabbedPane();
        jTabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
        for (int i = 0; i <= 10; i++) {
            JPanel panel = new JPanel();
            panel.setPreferredSize(new Dimension(500, 200));
            jTabbedPane.addTab("Tab " + i, panel);
        }
        JPanel mainPanel = new JPanel(new BorderLayout());
        Checkbox checkbox = new Checkbox("JTabbed Layout" , true);
        checkbox.addItemListener( (e) -> {
            System.out.println("checkbox current state : " + e.getStateChange());
            if (e.getStateChange() == 2) {
                jTabbedPane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);
                System.out.println("Current " + jTabbedPane.getTabLayoutPolicy());
            } else if (e.getStateChange() == 1) {
                jTabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
                System.out.println("Current " + jTabbedPane.getTabLayoutPolicy());
            }
        });

        mainPanel.add(checkbox, BorderLayout.NORTH);
        mainPanel.add(jTabbedPane, BorderLayout.CENTER);

        frame.setSize(600, 300);
        frame.getContentPane().add(mainPanel);
        frame.setVisible(true);
    }
}

