Adicionar uma classe dentro de JPanel de outra

Estou eu aqui novamente com mais um probleminha…

Pessoal, tenho uma classe que extends JFrame e está funcionando legal. Tenho outra classe que é um chat que também já está funcionando e essa classe extends JPanel. O que preciso é chamar esse chat dentro da primeira classe que citei. Na verdade eu já fiz isso e consegui colocar, no entanto, eu não consigo redimensionar o chat dentro do panel que criei. O trecho do código que utilizei para chamar o chat foi:

JPanel panelChat = new JPanel();//Cria  o JPanel que conterá o chat
panelChat.setSize(100, 100); //tamanho do JPanel que conterá o chat
panelChat.setBounds(803, 382, 205, 279); //Localização do JPanel que conterá o chat
getContentPane().add(panelChat); //Adicionando o JPanel ao Container principal da classe
panelChat.add(new ChatCliente());//Invocando instância do chat.

Como eu disse, aparece um JTextField onde deveria estar o chat e antes de eu ficar tentando redimensionar, aparecia o botão de enviar e eu consegui enviar mensagens normalmente.

Obrigado!

cassioliveira

vc ter que setar o Jframe como .setLayout(null);

o seu problema é quando vc add um JPanel a um Jframe, ou um Jpanel dentro de outro Jpanel?

Quando começei a trabalhar com Swing, tive bastante dor de cabeça até descobrir que podia deixar o layout como null. Na verdade, toda essa classe que estou trabalhando foi refeita do zero justamente para eu controlar o que estava fazendo e já deixar o layout como null.

Quanto à sua pergunta, o chat é um Jpanel agora e a classe que quero adicionar esse JPanel é um JFrame, mas nesse JFrame criei um outro Jpanel só para conter a classe do chat.

Veja na imagem em anexo como está parecendo na interface.

Obrigado.


De uma olhada nos Gerenciadores de Layout, eu não recomendaria a usar o layout como null. Outra coisa, as classes como o JFrame e JPanel por padrão já estão com os layouts BoxLayout e FlowLayout respectivamente, e se você quiser usar esses mesmos não será necessário ficar setando-os no método setLayout().

Me parece que seu layout está bem simples estão o BoxLayout iria te atender muito bem. Por exemplo

[code]JFrame frame = new JFrame();

    //frame.add(BorderLayout.EAST, new Button("Teste 2"));
    //frame.add(new Button("Teste 3"));
    JPanel panel = new JPanel();
    panel.add(new JTextField("Teste"));
    panel.add(new Button("Enviar"));        
    //adiciona ao JFrame
    frame.add(new Button("Figuras e Imagens"));
    frame.add(BorderLayout.EAST, panel);
    ///
    frame.setSize(800, 500);
    frame.setLocationRelativeTo(null); //centraliza
    frame.setVisible(true);[/code]

Entendi, o problema é que estou chamando uma classe dentro de outra e cada uma tem seu layout…

Como estou tendo contato somente há poucos dias com GUI, esse jogo de layouts ainda é um pouco confuso pra mim…

De qualquer forma obrigado e vou continuar tentando.