Adicionando JPanels adicionais a um JPanel
Pergunta
questão bastante básica aqui caras.
Basicamente, eu tenho um código como este:
public SuperPanel() {
setLayout(new BorderLayout());
add(panel1(), BorderLayout.NORTH);
add(panel2(), BorderLayout.CENTER);
add(panel3(), BorderLayout.SOUTH);
}
E isso tudo funciona muito bem. O problema é que eu tenho uma outra parte que deseja adicionar ao centro. Apenas usando add(newPanel(), BorderLayout.CENTER)
não trabalho, obviamente. Mas você pode adicionar JPanel
s em JPanel
s, correto?
Então eu fiz a seguinte alteração:
public SuperPanel() {
setLayout(new BorderLayout());
add(panel1(), BorderLayout.NORTH);
add(supersweetpanel(), BorderLayout.CENTER);
add(panel3(), BorderLayout.SOUTH);
}
Com estar supersweetpanel()
:
public JPanel supersweetpanel() {
JPanel sswp = new JPanel();
setLayout(new BorderLayout());
add(panel2(), BorderLayout.NORTH);
return sswp;
}
Agora, ele substitui panel1
! Se eu configurá-lo para qualquer outra coisa (CENTER
, SOUTH
, o que você tem), os dois primeiros painéis de desaparecer completamente. Ajuda é muito apreciado.
Solução
SuperPanel
é provável uma subclasse de JPanel
, certo? Você está acidentalmente adicionando panel2
para this
(a SuperPanel
), não sswp
. Tente:
public JPanel supersweetpanel() {
JPanel sswp = new JPanel();
sswp.setLayout(new BorderLayout());
sswp.add(panel2(), BorderLayout.NORTH);
return sswp;
}