Swing i eventos
Os paso un codigo a trozos, a ver si alguien me sabe decir donde esta el error:
public void init()
{
menu = new JMenu("Menu1");
menu.setMnemonic(KeyEvent.VK_A);
menuBar.add(menu);
menuItem = new JMenuItem ("Submenu1", KeyEvent.VK_T);
menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem ("Submenu2", KeyEvent.VK_T);
menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem ("Submenu3", KeyEvent.VK_F);
menuItem.addActionListener(this);
menu.add(menuItem);
}
public void actionPerformed (ActionEvent e)
{
String evento=new String();
evento=((JMenuItem).e.getSource()).getText();
System.out.println(evento);
if (evento.equals("Submenu1"))
{
try
{
System.out.println("He utilizado submenu1");
}
catch (Exception ex){}
}
if (evento.equals("Submenu2"))
{
try
{
System.out.println("HE utilizado submenu2");
}
catch (Exception ex){}
}
if (evento.equals("Submenu3"))
{
try
{
System.out.println("HE utilizado submenu3");
}
catch (Exception ex){}
}
}
El tema esta en que cuando apreto submenu 1 la variable evento adquiere correctamente el valor Submenu1 o Submenu2, pero, a la hora de ejecutar me ejecuta los 2 if i en la maquina virtual me sale
ejemplo:
submenu1
He utilizado Submenu1
He utilizado Submenu2
He utilizado submenu3
Como se ve, eso es incorrecto, a ver si hay solucin alguna, a ver si es por el if. mmm.
GRACIAS!!!
public void init()
{
menu = new JMenu("Menu1");
menu.setMnemonic(KeyEvent.VK_A);
menuBar.add(menu);
menuItem = new JMenuItem ("Submenu1", KeyEvent.VK_T);
menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem ("Submenu2", KeyEvent.VK_T);
menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem ("Submenu3", KeyEvent.VK_F);
menuItem.addActionListener(this);
menu.add(menuItem);
}
public void actionPerformed (ActionEvent e)
{
String evento=new String();
evento=((JMenuItem).e.getSource()).getText();
System.out.println(evento);
if (evento.equals("Submenu1"))
{
try
{
System.out.println("He utilizado submenu1");
}
catch (Exception ex){}
}
if (evento.equals("Submenu2"))
{
try
{
System.out.println("HE utilizado submenu2");
}
catch (Exception ex){}
}
if (evento.equals("Submenu3"))
{
try
{
System.out.println("HE utilizado submenu3");
}
catch (Exception ex){}
}
}
El tema esta en que cuando apreto submenu 1 la variable evento adquiere correctamente el valor Submenu1 o Submenu2, pero, a la hora de ejecutar me ejecuta los 2 if i en la maquina virtual me sale
ejemplo:
submenu1
He utilizado Submenu1
He utilizado Submenu2
He utilizado submenu3
Como se ve, eso es incorrecto, a ver si hay solucin alguna, a ver si es por el if. mmm.
GRACIAS!!!
No será la salida as�
submenu1
He utilizado Submenu1
submenu2
He utilizado Submenu2
submenu3
He utilizado submenu3
Por cierto, es suficiente con:
String evento=((JMenuItem).e.getSource()).getText();
aunque no tenga nada que ver.
Saludos!
submenu1
He utilizado Submenu1
submenu2
He utilizado Submenu2
submenu3
He utilizado submenu3
Por cierto, es suficiente con:
String evento=((JMenuItem).e.getSource()).getText();
aunque no tenga nada que ver.
Saludos!
Por cierto, con un switch, solo puedo trabajar con enteros no? Porque seria una forma elegante. Pero claro, estoy con strings :(
Bueno, no entiendo pues porque entra en todos los ifs...
Puedes cambiarlos por lo siguiente:
if (evento.equals("Submenu1")){
//lo que sea
}
else if (evento.equals("Submenu2")){
}
else if (evento.equals("Submenu3")){
}
Asà seguro que sólo te entra en uno, anuque no se siserá el que toca :P
O puedes hacer la guarrada de poner return; detrás de cada System.out...
Saludos!
Puedes cambiarlos por lo siguiente:
if (evento.equals("Submenu1")){
//lo que sea
}
else if (evento.equals("Submenu2")){
}
else if (evento.equals("Submenu3")){
}
Asà seguro que sólo te entra en uno, anuque no se siserá el que toca :P
O puedes hacer la guarrada de poner return; detrás de cada System.out...
Saludos!
ya esta!!!! Solucionado. No me llames iluso :( pero me he colado, i he puesto en una sentencia
else if (condicion);
{estateman}
bueno, ya ves, el ";", k me he colado! Ya lo arregle i va. estare toda la vida programando y siempre fallare en lo mismo, i claro, como el compilador no me ayuda... jeje.
DEU
else if (condicion);
{estateman}
bueno, ya ves, el ";", k me he colado! Ya lo arregle i va. estare toda la vida programando y siempre fallare en lo mismo, i claro, como el compilador no me ayuda... jeje.
DEU
No no! La salida es como he dicho! :)
Al hacer una cascada "guarrilla" de if, me funciona correctamente, ya lo he provado, pero claro, como digo es algo "guarrillo".
Lo que me cuentas que es suficiente, ya :), tienes razon, la verdad es que es como lo tenia desde el principio, pero empeze a provar cosas, i se quedo asi. jeje
Al hacer una cascada "guarrilla" de if, me funciona correctamente, ya lo he provado, pero claro, como digo es algo "guarrillo".
Lo que me cuentas que es suficiente, ya :), tienes razon, la verdad es que es como lo tenia desde el principio, pero empeze a provar cosas, i se quedo asi. jeje
