Mi problema es el siguiente:
Quiero crear un frame compuesto por tres paneles, uno superior, uno central y otro inferior. De forma que inicialmente solo estén visibles el superior y el central y cuando se pulsa en un comboBox aparece el panel inferior. No consigo que se acualize el frame con el panel inferior, alguien puede hecharme una mano?
Pongo el código para ver si alguien me puede ayudar:
package interfaz_usuario;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
/**
* @author Eduardo Brime Bertrand
*/
public class JinterfazUsuario extends JFrame implements ActionListener {
String[] nombreColumnas = {"Nombre",
"Apellidos",
"Dirección"};
String[][] datos = {{"Edu","Brime","Av. América"},
{"David","Gutierrez","Campodon"},
{"MJ","Alvarez","Paseo Extremadura"}};
JPanel panelPpal;
JFrame frame;
public JinterfazUsuario(){
frame = new JFrame();
frame.setTitle("Gestor de Errores de FromsPath.");
panelPpal(false,null);
frame.setContentPane(panelPpal);
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void panelPpal(boolean bInf,String query){
panelPpal = new JPanel();
panelPpal.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.anchor = GridBagConstraints.WEST;
panelPpal.add(panelSuperior(),c);
JTable table = new JTable(datos,nombreColumnas);
JScrollPane scroll = new JScrollPane(table);
c.gridx = 0;
c.gridy = 1;
panelPpal.add(scroll,c);
if (bInf){
//Creamos el panel inferior con el contenido del combo
c.anchor = GridBagConstraints.WEST;
c.gridx = 0;
c.gridy = 2;
panelPpal.add(panelInferior(query),c);
panelPpal.updateUI();
panelPpal.paint(this.getGraphics());
}
panelPpal.repaint();
frame.pack();
frame.setVisible(true);
}
public JPanel panelSuperior(){
System.out.println("Creado panel superior.");
String[] datos = {"Select 1","Select 2","Select 3"};
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
JComboBox selects = new JComboBox(datos);
panel.add(selects);
selects.addActionListener(this);
JButton nuevaConsulta = new JButton("Nueva Consulta");
panel.add(nuevaConsulta);
return panel;
}
public JPanel panelInferior (String query){
System.out.println("Creado panel inferior");
JPanel panelInf = new JPanel();
TextArea text = new TextArea();
text.setText(query);
panelInf.add(text);
JPanel panelBoton = new JPanel();
JButton bGuardar = new JButton("Guardar");
JButton bEjecutar = new JButton("Ejecutar");
panelBoton.setLayout(new BoxLayout(panelBoton,BoxLayout.Y_AXIS));
panelBoton.add(bGuardar);
panelBoton.add(bEjecutar);
panelInf.add(panelBoton);
return panelInf;
}
/**
* Acción del comboBox selects
* */
public void actionPerformed(ActionEvent e) {
System.out.println("EVENTO");
JComboBox cb = (JComboBox)e.getSource();
String query = (String)cb.getSelectedItem();
//Volvemos a crear el panel ppal
panelPpal(true,query);
panelPpal.setVisible(true);
}
public static void main(String[] args) {
JinterfazUsuario interfaz = new JinterfazUsuario();
}
}