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 JPanels em JPanels, 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.

Foi útil?

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;
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top