Mostrar o JPanel

4 respostas
K

Eu fiz duas classes com o NetBeans.
A primeira tem o nome panel, (só tem um botão nele) e seu código é:

public class panel extends javax.swing.JPanel {

public panel() {

initComponents();

}
private void initComponents() {
   [i]aqui vem o cófigo gerado pelo NetBeans [/i]                        
}

}

A outra classe é um JFrame, onde quero exibir o JPanel, criado com classe panel. Então fiz assim:

public class frame extends javax.swing.JFrame {

public frame() {

initComponents();

}
private void initComponents() {
   [i]aqui vem c código gerado pelo NetBeans[/i]
}
    
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            frame w = new frame();
            panel pn = new panel();
            w.add(pn);
            w.setVisible(true);                
        }
    });
}

}

Daí executo. o JFrame está lá, mas o JPanel, que deveria estar adicionado ao JFrame, não aparece.
Como sou iniciante em java, talvez eu esteja totalmente por fora. Acontece que eu não estou sabendo colocar um JPanel em um JFrame (ambos em classes separadas).

Obrigado a todos.

4 Respostas

H

Tu tens q instanciar o panel criado na classe frame e adicioná-lo a este frame, pelo getContentPane():

public class frame extends JFrame{

panel p;

.

.

.
public frame(){
      p = new panel();

      .
      .
      .
      getContentPane().add(p, BorderLayout.CENTER);

    }

}

K

fiz do jeito que tu orientou. Não dá nehum erro, mas simplesmente não acontece nada, ou seja, o frame aparece mas o panel (que deveria ficar dentro dele), não aparece.

O que deve ser feito então?

Obrigado.

K

Ah… interessane:

quando retiro o método initComponents(), aí funciona direito, mas o frame fica com a aparência de “minimizado”, ou seja, perde todas as propriedades de bordas, centralização, posicionamento na tela, etc (essas propriedades foram adicionadas automaticamente pelo NetBeans). Então eu fico me perguntando, por que o NetBeans faz isso? Não tem como contornar a situação?

K

RESOLVIDO!!!

Você tinha razão. É o Border Layolt que é o responsável. Porém, a melhor forma de conseguir incorporar o JPanel, foi clicando com o botão direito do mouse sobre o JFrame e setando o Border Layout. (usando o NetBeans, é claro). É o único layolt capaz disso, a maioria dá erro, ou simplesmente nada acontece.

Obrigado pela referência. Caso resolvido, até a próxima.

Criado 8 de abril de 2006
Ultima resposta 8 de abr. de 2006
Respostas 4
Participantes 2