Olá pessoal, estou desenvolvendo um projeto e nele inseri um botão cuja ação é criar novas abas em um JTabbedPane. Estou com dificuldade para fazer com que o aumento do tamanho do mesmo seja randômico e adicione as abas sempre ao lado direito, mas ao fazer tal ação, ele sempre adiciona a aba abaixo da aba padrão.

Segue código que criei para tal ação do botão:
JPanel jPAba2 = new JPanel();
jPNavegacao.setVisible(false);
int altura = jTPAbas.getHeight();
jTPAbas.setSize(jPAba1.getWidth() + jPAba1.getWidth(), altura);
jTPAbas.add(jPAba2).setBounds(jPAba1.getX() + 1, jPAba1.getY(), jPAba1.getWidth(), jPAba1.getHeight());
Imagino que preciso dobrar o tamanho do meu JTabbedPane e adicionar a nova aba, mas já tentei de algumas formas diferentes e todas sem sucesso. Alguém sabe como posso fazer isso?
Não, o componente sabe controlar o seu tamanho. 
Você tem que criar as abas através do método addTab(String nomeDaAba, Component componenteAserAdicionado ) da classe JTabbedPane.
Veja o método adicionarAba() no exemplo abaixo:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.UIManager;
public class Programa extends JFrame {
private JTabbedPane tabbedPane;
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Programa programa = new Programa();
programa.setDefaultCloseOperation(EXIT_ON_CLOSE);
programa.setLocationRelativeTo(null);
programa.setVisible(true);
} catch (Throwable t) {
t.printStackTrace();
}
}
Programa() {
super("Meu Programinha");
Dimension size = new Dimension(800, 600);
setMinimumSize(size);
setSize(size);
Container container = getContentPane();
container.setLayout(new BorderLayout());
JButton button = new JButton("+");
button.addActionListener(event -> adicionarAba());
JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
panel.add(button);
tabbedPane = new JTabbedPane();
container.add(panel, BorderLayout.NORTH);
container.add(tabbedPane, BorderLayout.CENTER);
}
private void adicionarAba() {
int numero = tabbedPane.getTabCount();
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JLabel("Esse é o JPanel " + numero));
String titulo = "Aba " + numero;
tabbedPane.addTab(titulo, panel);
}
}
2 curtidas
Ótimo, funcionou!
A minha questão agora é que toda vez que eu clico em uma das abas, ele altera a posição das mesmas. Gostaria de deixar como o seu exemplo e não no formato abaixo:

Já tentei alterar as propriedades do jTabbedPane, mas sem sucesso.
Imagens não ajudam.
Posta o seu código e não esqueça de formatá-lo com o botão </>.
Não precisará, era uma propriedade padrão do jTabbedPane que estava influenciando. Tive que alterá-la de forma externa e com isso, o funcionamento está da forma desejada!
Muito obrigado mesmo pela ajuda.