Foros del Web » Programación para mayores de 30 ;) » Java »

Problemas con paneles en swing

Estas en el tema de Problemas con paneles en swing en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/10/2006, 11:13
 
Fecha de Ingreso: octubre-2006
Ubicación: Madrid
Mensajes: 23
Antigüedad: 18 años, 1 mes
Puntos: 0
Problemas con paneles en swing

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();

}
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:23.