Componentes extendendo JPanel

3 respostas
Leco2

Olá pessoal, estou com uma dúvida ao adicionar um JPanel em um JFrame…
por exemplo eu tenho 2 classas extendendo Jpanel, cada classe é responsável por desenhar um Quadrado:

public class QuadradoA extends JPanel{
    @Override
    public void paintComponent(Graphics g){
       super.paintComponent(g);

       g.drawRect(20, 100, 500, 500);
    }
}
public class QuadradoB extends JPanel{

    @Override
    public void paintComponent(Graphics g){
       super.paintComponent(g);

       g.drawRect(520, 100, 500, 500);
    }
}

até aqui td bem…agora como eu adiciono isso no JFrame?

QuadradoA Q1 = new QuadradoA();
QuadradoB Q2 = new QuadradoB();
setContentPane(Q1);
//setContentPane(Q2); creio que se eu fizer isso eu vou sobrepor oque eu acabei de Adicionar...

já tentei usar getContentPane().add()…mas não consegui…
pode parecer bobo mas poderiam me ajudar a adicionar esses 2 Jpanel por favor!!

3 Respostas

ViniGodoy

Olha… não sei o que você quer fazer, mas essa não é, nem de longe, a melhor maneira de trabalhar com Java 2D.

Dá uma lida nos tutoriais do meu site:
Uma visão rápida sobre o Java2D.

Em todo caso, é bem provável que seus paineis sejam adicionados, mas tenham tamanho 0.
No construtor de cada painel dê o comando setPreferredSize(800,800) em cada painel.

Só lembrando que como são dois paineis, um painel irá ficar ao lado do outro. Se você quer que os quadrados fiquem na mesma área de pintura, recomendo que dê uma lida nos tutoriais lá do Ponto V!. Eles vão te dar uma boa noção sobre como desenhar em Java 2D.

Leco2

vlw eu lí la o site mas meu problema não é como pintar a imagem…a imagem eu conseguir fazer, o problema seria inserir esses 2 quadrados no JFrame.
eu tentei fazer oque o Vinny falou mas não deu certo…
Só mais uma pergunta teoricamente se eu usasse

getContentPane().add(minhaClasse);

ele não deveria carregar a imagem? no meu ele não carrega…

seria errado fazer

getContentPane().add(QuadradoA);
getContentPane().add(QuadradoB);

?

M

Tente fazer assim:

setLayout(new GridLayout(1, 0));
add(painel1);
add(painel2);
Criado 15 de dezembro de 2009
Ultima resposta 15 de dez. de 2009
Respostas 3
Participantes 3