ayuda con setVisible()

telemaco
13 de Enero del 2005
Saludos a tod@s. Estoy empezando con esto del Java y se me ha presetnado un pequeño problema con este método.
El caso es que yo quiero crear una aplicación con un menú y dependiendo de la opción que se elija, que se muestre un determinado panel. Así que la instrucción que le doy cuando pulso cobre un de los elementos del menú es nombre_de_panel.setVisible(true);, pero el panel no aparece! Podría alguien tener una idea de cuál es el problema??
Os dejo el código por si ayuda...

import java.awt.*;
import java.awt.event.*;

public class Alumnos_app extends java.applet.Applet{

static Frame principal;
StringBuffer[][] alumnos;
Label saludo;
Dialog pregunta;
TextField max_alum, nombre, nota;
AB panel_altas, panel_bajas;
MenuItem altas_item, bajas_item, consultas_item, salir_item;
Button aceptar_preg;
ActionListener event_handler;

public void init() {
Font fuente = new Font("Helvetica",Font.PLAIN,16);
principal.setFont(fuente);
//principal.setLayout(new BorderLayout());

saludo = new Label("Bienvenido al excitante mundo de PaquitoSoft...",Label.CENTER);
altas_item = new MenuItem("Altas");
bajas_item = new MenuItem("Bajas");
consultas_item = new MenuItem("Consultas");
salir_item = new MenuItem("Salir");
aceptar_preg = new Button("Aceptar");

principal.setSize(500,250);

event_handler = new ActionListener(){
public void actionPerformed(ActionEvent evt){
menu_item_click(evt);
}
};

MenuBar menbar = new MenuBar();
Menu menu = new Menu("Opciones");
altas_item.addActionListener(event_handler);
menu.add(altas_item);
bajas_item.addActionListener(event_handler);
menu.add(bajas_item);
consultas_item.addActionListener(event_handler);
menu.add(consultas_item);
menu.add(new MenuItem("-"));
salir_item.addActionListener(event_handler);
menu.add(salir_item);
menbar.add(menu);
menbar.setFont(new Font("Helvetica",Font.PLAIN,12));
principal.setMenuBar(menbar);


pregunta = new Dialog(principal,"IMPORTANTE!!!",true);
pregunta.setLayout(new GridLayout(3,1,10,10));
pregunta.setFont(new Font("Curier",Font.BOLD,12));
pregunta.add(new Label("¿Cuántos alumnos?"));
max_alum = new TextField("",10);
pregunta.add(max_alum);
aceptar_preg.addActionListener(event_handler);
pregunta.add(aceptar_preg);
pregunta.setSize(250,200);

panel_altas = new AB("Añadir");
principal.add(panel_altas);
panel_altas.setVisible(false);
panel_bajas = new AB("Borrar");
principal.add(panel_bajas);
panel_bajas.setVisible(false);

principal.add(saludo);

principal.show();
//pregunta.show();
}

private void menu_item_click (ActionEvent evt){
System.out.println(evt.getActionCommand());

if (evt.getActionCommand().equals("Salir")){
System.out.println(evt.getSource().toString());
System.exit(0);
}
if (evt.getActionCommand().equals("Altas")){
System.out.println(evt.getSource().toString());
saludo.setVisible(false);
panel_altas.setVisible(true);
System.out.println("Showing:"+panel_altas.isShowing()+"tVisible:"+panel_altas.isVisible());
//saludo.setText("Has pulsado en 'Altas'");
}
if (evt.getActionCommand().equals("Bajas")){
System.out.println(evt.getSource().toString());
panel_bajas.setVisible(true);
saludo.setText("Has pulsado en 'Bajas'");
saludo.setVisible(true);
}
if (evt.getActionCommand().equals("Consultas")){
System.out.println(evt.getSource().toString());
saludo.setText("Has pulsado en 'Consultas'");
}
if (evt.getActionCommand().equals("Aceptar")){
int limite = Integer.parseInt(max_alum.getText());
if (limite > 0){
alumnos = new StringBuffer[limite][2];
pregunta.hide();
System.out.println(limite);
}
}


}

Alumnos_app(){
super();
principal = new Frame("PaquitoSoft");
}

public static void main(String[] args){
// Frame principal = new Frame("PaquitoSoft");
Alumnos_app obj = new Alumnos_app();

obj.init();
obj.start();
principal.add(obj);
//principal.setSize(500,250);
//principal.show();

}
}

class AB extends Panel{

TextField nombre2, nota2;

AB(String boton){

//panel_altas.setSize(principal.getWidth(),principal.getHeight());
this.setLayout(new GridLayout(3,2));
this.add(new Label("Nombre alumno:",1));
nombre2 = new TextField("",10);
nombre2.setFont(new Font("Helvetica",Font.PLAIN,16));
this.add(nombre2,1);

this.add(new Label("Nota:",1));
nota2 = new TextField("0",5);
this.add(nota2, -1);

this.add(new Button(boton));
}

}

adson3000
13 de Enero del 2005
Oye, me ha surgido una pregunta, estas estudiando ingenieria telematica???

telemaco
13 de Enero del 2005
eeeee.. pues no. estudio turismo, pero esto del java me interesa. A ver si algún alma cándida me puede decir qué hago mal, porque yo no soy capaz de solucionarlo.

sal00m
13 de Enero del 2005
puede ser que cuando muestres un panel debes ocultar el resto..... si no al estar uno encima del otro... no aparecen correctamente... o por lo menos eso creo....

Espero te sirva

Lucas
13 de Enero del 2005
quita el panel del contenedor y añade el que quieras mostrar, con remove y add