Java tutorial
import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Main { public static void main(String[] args) { JTabbedPane tab = new JTabbedPane(); tab.addTab("A", new JPanel()); tab.addTab("+", new JPanel()); tab.getModel().addChangeListener(new ChangeListener() { private int lastSelected; private boolean ignore = false; @Override public void stateChanged(ChangeEvent e) { if (!ignore) { ignore = true; try { int selected = tab.getSelectedIndex(); String title = tab.getTitleAt(selected); if ("+".equals(title)) { JPanel pane = new JPanel(); tab.insertTab("Tab" + (tab.getTabCount() - 1), null, pane, null, lastSelected + 1); tab.setSelectedComponent(pane); } else { lastSelected = selected; } } finally { ignore = false; } } } }); final JButton btn = new JButton("Add"); btn.addActionListener(e -> System.out.println(tab.getTabCount())); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(tab); frame.add(btn, BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); } }