Really quick and dirty (definitely needs improvements and changes), but I would suggest something like this might work for you (but this is not JTabbePane):
import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; public class Test { public static class WrapLayout extends FlowLayout { private Dimension preferredLayoutSize; public WrapLayout() { super(); } public WrapLayout(int align) { super(align); } public WrapLayout(int align, int hgap, int vgap) { super(align, hgap, vgap); } @Override public Dimension preferredLayoutSize(Container target) { return layoutSize(target, true); } @Override public Dimension minimumLayoutSize(Container target) { Dimension minimum = layoutSize(target, false); minimum.width -= getHgap() + 1; return minimum; } private Dimension layoutSize(Container target, boolean preferred) { synchronized (target.getTreeLock()) {
WrapLayout was taken from another post in SO.
source share