Aunque JPanel sea un contenedor, no "existe por sí mismo", visualmente hablando, sino que debe añadirse a un componente que herede Window, como JFrame.
Esos dos JPanel que creas no existen para el UI, por lo que no se pueden hacer visibles.
Tampoco sirve, como ya has visto, asignar sus referencias a otro JPanel existente.
Si lo que intentas es colocar paneles superpuestos, en tiempo de ejecución, puedes utilizar el LayeredPane: http://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html
Gracias choces por responder. Lo que al final he hecho, es sobre el panel derecho añadir el panel que quiero mostrar. Cuando quiero mostrar uno diferente, elimino todos los componentes del panel derecho y muestro el otro panel.
Probaré también el layeredpane.
Gracias.
Saludos.
Hola a tod@s,
estoy haciendo una aplicación gráfica, la cual consta de un JFrame con dos JPanel, uno a la izquierda con todos los botones de opciones (Inicio, Ventas, Compras, etc etc) y el de la derecha donde cargo un panel que es el formulario para cada opción.
Aquí viene mi problema.... Mi idea es...Creo dos JPanel a aparte, desde NetBeans, dentro del mismo paquete, y actualizo el JPanel que tengo por defecto a la derecha a uno de estos dos paneles, simplemente haciéndole una asginación, pero qué pasa???? Que no hace nada...ni repintándolo ni nada de nada...os pego el código de un ejemplo sencillo que he hecho para que veáis que quiero hacer y que tampoco funciona:
public class Principal extends javax.swing.JFrame {
/**
* Creates new form Principal
*/
private Panel1 panel1;
private Panel2 panel2;
public Principal() {
initComponents();
this.panel1 = new Panel1();
this.panel2 = new Panel2();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel3 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jPanelOpciones = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jPanelMuestra = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2.setText("Este es el Panel3!");
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(120, 120, 120)
.addComponent(jLabel2)
.addContainerGap(105, Short.MAX_VALUE))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(65, 65, 65)
.addComponent(jLabel2)
.addContainerGap(138, Short.MAX_VALUE))
);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText("Opcion1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Opcion2");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanelOpcionesLayout = new javax.swing.GroupLayout(jPanelOpciones);
jPanelOpciones.setLayout(jPanelOpcionesLayout);
jPanelOpcionesLayout.setHorizontalGroup(
jPanelOpcionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelOpcionesLayout.createSequentialGroup()
.addGap(19, 19, 19)
.addGroup(jPanelOpcionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton2)
.addComponent(jButton1))
.addContainerGap(38, Short.MAX_VALUE))
);
jPanelOpcionesLayout.setVerticalGroup(
jPanelOpcionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelOpcionesLayout.createSequentialGroup()
.addGap(44, 44, 44)
.addComponent(jButton1)
.addGap(54, 54, 54)
.addComponent(jButton2)
.addContainerGap(134, Short.MAX_VALUE))
);
jLabel1.setText("Aquí se muestra todo");
javax.swing.GroupLayout jPanelMuestraLayout = new javax.swing.GroupLayout(jPanelMuestra);
jPanelMuestra.setLayout(jPanelMuestraLayout);
jPanelMuestraLayout.setHorizontalGroup(
jPanelMuestraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelMuestraLayout.createSequentialGroup()
.addGap(87, 87, 87)
.addComponent(jLabel1)
.addContainerGap(45, Short.MAX_VALUE))
);
jPanelMuestraLayout.setVerticalGroup(
jPanelMuestraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelMuestraLayout.createSequentialGroup()
.addGap(110, 110, 110)
.addComponent(jLabel1)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
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(jPanelOpciones, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jPanelMuestra, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jPanelMuestra, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanelOpciones, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.panel1.setSize(600, 600);
this.panel1.setVisible(true);
this.jPanelMuestra=this.panel1;
this.jPanelMuestra.repaint();
this.jPanelMuestra.updateUI();
/*
this.jPanel3.setSize(600, 600);
this.jPanel3.setVisible(true);
this.jPanelMuestra=this.jPanel3;
this.jPanelMuestra.repaint();
this.jPanelMuestra.updateUI();
*/
this.repaint();
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.jPanelMuestra=this.panel2;
this.repaint();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Principal().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanelMuestra;
private javax.swing.JPanel jPanelOpciones;
// End of variables declaration
}
Las variables Panel1 y Panel2, son dos simples JPanel que contienen una etiqueta de texto para diferenciar uno del otro.
Saludos.