Chamar um JPANEL em um JFRAME, mas este JPANEL está fora do formulário

Boa tarde a todos!
Primeiro tópico, trezentas duvida!!!

mas no momento é uma só que preciso sanar

no netbeans 6.9.1

Seguinte: eu crio um projeto. depois, pelo netbeans eu crio um jform(dentro da pasta do projetos, NOVO > Formulario) . depois crio um jpanel(mesmo esquema do jform). ou seja, tenho 3 arquivos.(main.java, NewJForm.java, NewJPanel.java). até aqui, tudo xuxubeleza!

mas eu preciso chamar este jpanel no meu jform…criei um botão qualquer, e chamando este jpanel, com o evento de ação

NewJPanel a = new NewJPanel(); a.setVisible(true);

mas o jpanel não aparece no jform

o que eu devo fazer??

Grato desde já

Oi rafael.indiao,

Se entendi é isso:

                                     
   new NewJPanel().setVisible(true);  

Anime,

tentei mas não me apareceu nada…

[quote=rafael.indiao]Anime,

tentei mas não me apareceu nada…[/quote]

Se você não estiver usando o evento ActionPerformed,pode ser isso…

bom, o evento está como ActionPerformed…
agora eu coloquei no main do jform, e nada do mesmo jeito…

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new PRINCIPAL().setVisible(true);
                NewJPanel a = new NewJPanel();
                a.setVisible(true);
            }
        });
    }

Por favor,poste a classe onde fica o botão que chama o jpanel…

JPanel não é uma janela, por isso não aparece. Você deve adicioná-lo em uma janela, como um JFrame, para que ele apareça dentro dela.

classe do jpanel:

package movimento;

public class NewJPanel extends javax.swing.JPanel {


    public NewJPanel() {
        initComponents();
        
    }

    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        setBackground(new java.awt.Color(204, 0, 153));
        setBorder(new javax.swing.border.MatteBorder(null));
        setToolTipText("null");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 344, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 309, Short.MAX_VALUE)
        );

        getAccessibleContext().setAccessibleName("a");
        getAccessibleContext().setAccessibleParent(this);
    }// </editor-fold>                        


    // Variables declaration - do not modify                     
    // End of variables declaration                   

}

jform:

package movimento;
public class PRINCIPAL extends javax.swing.JFrame {

    
    public PRINCIPAL() {
        initComponents();
    }
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jButton1)
                .addContainerGap(487, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jButton1)
                .addContainerGap(385, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        NewJPanel a = new NewJPanel();
                a.setVisible(true);
    }                                        

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new PRINCIPAL().setVisible(true);
                
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    // End of variables declaration

}

agora o mais dificil: o main do projeto:

package movimento;

import javax.swing.JFrame;


public class Main {

    public static void main(String[] args) {
       
       new PRINCIPAL().setVisible(true);
    }

}

reforçando: usei netbeans e cada código representa um arquivo

Verdade estou fazendo confusão por que ele citou jform,o que desconheço… :roll:

O que vc esta chamando de jform é um JFrame,certo…Use um JFrame no lugar do jpanel…

mas e se eu tiver vários jpanel??? se fossem 2 jpanel, eu chamaria por um jtabbledpane sussegado…mas pelos meus calculos vou chamar uns 20 paineis…ai ficaria lento

ai vcs me disseram sobre fazer jform…pensei nesse caso, mas ai eu iria chamar ele por tela, ficando pra “fora”, ou seja, abrido mais do que uma janela…

o meu objetivo chamado os jpanel para dentro de um unifo formulario seria economia de memoria , e menos poluição visual:

no caso de varios forms, seriam varias janelas…e se eu abrir 20 janelas(não que eu abra as 20, mas citando um exemplo)…entendeu?? ai eu quero abrir elas dentro do formulario…

Entendi,é… + ou -… :roll:

Não tem por que abrir várias janelas ao mesmo tempo,se abrir uma,fecha a outra…sei lá,segue seu raciocinio… :wink:

Obs:O código esta certo.


  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
         NewJPanel a = new NewJPanel();  
                 a.setVisible(true);  
     }   

Pelo que eu entendi, você quer que vários JPanel ocupem o mesmo espaço e, dependendo do que for selecionado (em um menu ou algo assim), os paineis vão sendo exibidos. É isso?

Se for isso, dê uma pesquisada sobre CardLayout.

A propósito, sobre o código postado, o JPanel não vai aparecer se não for adicionado ao JFrame.