Problema CardLayout

artachone
25 de Junio del 2006
Hola, mi problema es el siguiente:
Tengo un JFrame con BorderLayout, en BorderLayout.NORTH pongo un menu, en BorderLayout.CENTER pongo un panel con Cardlayout que previamente le he añadido 2 paneles a mostrar. Cuando arrranca me muestra el primer panel añadido a CardLayout pero no puedo cambiar entre paneles cuando pulso algún menu.
Este es mi código
package visual;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class zz extends javax.swing.JFrame {

private javax.swing.JMenu jMenu1;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;

private JPanel panelCentral;
private String panelA = "panelA";
private String panelB = "panelB";

/** Creates new form zz */
public zz() {
JPanel_a pa = new JPanel_a();
JPanel_b pb = new JPanel_b();

panelCentral = new JPanel();
panelCentral.setLayout(new java.awt.CardLayout());
panelCentral.add(this.panelA, pa);
panelCentral.add(this.panelB, pb);

getContentPane().add(panelCentral, java.awt.BorderLayout.CENTER);
this.setSize(600, 500);
initComponents();
}
// Aqui intento cambiar a panel b
private void jMenuItem2MouseClicked(java.awt.event.MouseEvent evt) {
CardLayout cl = (CardLayout)(panelCentral.getLayout());
cl.show(panelCentral, this.panelB);
}
// Aqui intento cambiar a panel a
private void jMenuItem1MouseClicked(java.awt.event.MouseEvent evt) {
CardLayout cl = (CardLayout)(panelCentral.getLayout());
cl.show(panelCentral, this.panelA);
}
// esto es del Netbeans
private void initComponents() {
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jMenuItem2 = new javax.swing.JMenuItem();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jMenu1.setText("Menu");
jMenuItem1.setText("Opcion1");
jMenuItem1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jMenuItem1MouseClicked(evt);
}
});

jMenu1.add(jMenuItem1);

jMenuItem2.setText("Opcion2");
jMenuItem2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jMenuItem2MouseClicked(evt);
}
});

jMenu1.add(jMenuItem2);

jMenuBar1.add(jMenu1);

setJMenuBar(jMenuBar1);

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

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

artachone
25 de Junio del 2006
Bueno, probando me he dado cuanta de que cuando se ejecuta una de las opciones del menu no hace nada asi que he puesto mouseclicked a el menu cuando aparecen las opciones y ya si cambia.
Pero yo quiero que cambie en las opciones del menu no al pulsar el menu cuando aparecen todas las opciones

artachone
25 de Junio del 2006
Bueno lo he solucionado con ActionPerformed en las opciones

erick_java
25 de Junio del 2006
Bueno aqui un ejemplo con CardLayout:

esta es la parte del codigo en la que debes poner mas atencion
------------------------------
//añadiendo a un administrador de componentes
baraja.addLayoutComponent("1",barra);
baraja.addLayoutComponent("2",tablaPanel);
//por defecto mostrar el componente etiquetado con "1"
baraja.show(contenedor,"1");
-------------------------------
import java.awt.*;
import javax.swing.*;

public class VentanaCardLayout extends JFrame
{
JTable tabla;
JTabbedPane tablaPanel;
JScrollPane barra;
public VentanaCardLayout()
{
Container contenedor=getContentPane();
CardLayout baraja=new CardLayout();
contenedor.setLayout(baraja);//fijar administrador
Object datos[][]={{\"dato 0,0\",\"dato 0,1\"},{\"dato 1,0\",\"dato 1,1\"}};
Object nombres[]={\"columna1\", \"columna2\"};
tabla =new JTable(datos,nombres);
tablaPanel=new JTabbedPane();
barra=new JScrollPane(tabla);

//constructor de JTabbedPane
tablaPanel.addTab(\"pestaña1\", new JButton(\"Boton\"));
tablaPanel.addTab(\"Pestaña2\", new JTextField());

//añadiendo componentes
contenedor.add(\"1\",barra);
contenedor.add(\"2\",tablaPanel);

//añadiendo a un administrador de componentes
baraja.addLayoutComponent(\"1\",barra);
baraja.addLayoutComponent(\"2\",tablaPanel);
//por defecto mostrar el componente etiquetado con \"1\"
baraja.show(contenedor,\"1\");

setTitle(\"COMPONENTE CARDLAYOUT\"); //super(\" ventana \");
//setState(ICONIFIED); //minimiza
setIconImage(Toolkit.getDefaultToolkit().getImage(\"Imagenes/fondo.gif\"));
//setUndecorated(true); //quita la decoracion
resize(500,200);
setVisible(true);
}
public static void main(String arg[])
{
new VentanaCardLayout();
}
}

espero te haya sido de ayuda!!!