MUSICONICA
Páginas: [1] 2   Ir Abajo
  Imprimir  
Autor Tema: Problema en j2me - choicegroup  (Leído 1697 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Lozano
Desocupado
***
Desconectado Desconectado

Mensajes: 268


>>Paisalandia<<


Ver Perfil WWW
« en: 16 de Octubre de 2009, 04:32:52 »

Bueno, tengo un problema intentando obtener el objeto seleccionado en un choicegroup (popup), yo tengo el siguiente codigo:

Código:
// Optener articulo seleccionado

int articulo;

articulo = choiceGroup.getSelectedIndex();

if (articulo == 1){

 simpleTableModel.setValue(1, 1, "" + choiceGroup.getString(articulo));
 simpleTableModel.fireTableModelChanged(); }


Cuando selecciono la opcion 1, no se efectuan las instrucciones que le doy despues del if, el compilador (Netbeans) no me detecta errores ni nada de eso (como si el codigo estuviera bien) pero no me imprime en el simpleTableModel el objeto seleccionado en el choicegroup.
Le he hecho varios cambios al codigo, incluso cambiando de int a string, metiendo todo en variables y un monton de cosas mas pero nada me resulta, espero que me puedan ayudar o dar alguna sugerencia que me pueda ayudar a solucionar mi problema

Gracias
En línea

"Un matematico aplicando sus calculos a la naturaleza" Fisico.
flacman
Administrador
Vago degenerado
*
Desconectado Desconectado

Mensajes: 2.897


Trabajar, trabajar y trabajar! . Uribe


Ver Perfil WWW
« Respuesta #1 en: 16 de Octubre de 2009, 06:14:30 »

intente con if(choicegroup.isSelected(1)){ }

por otro lado haga un printf() (o ekivalente en java xD) para ver si entra y si el problema es en el fireTableModelChanged de la simpleTable
En línea

Posted by
Lozano
Desocupado
***
Desconectado Desconectado

Mensajes: 268


>>Paisalandia<<


Ver Perfil WWW
« Respuesta #2 en: 16 de Octubre de 2009, 08:19:24 »

intente con if(choicegroup.isSelected(1)){ }

nada, tampoco me funciona asi como ud dice

por otro lado haga un printf() (o ekivalente en java xD) para ver si entra y si el problema es en el fireTableModelChanged de la simpleTable

Trato de utilizar System.out.println("algo"); como independiente al programa pero no me funciona (no se por que) debe ser que tengo que utilizar la clase de canvas, pero eso es otro cuento, prove de otra manera (una accion que se ejecutara despues del if haber que pasaba) pero no funciono, ahora creo que el problema es del if y no de la simpleTableModel.fireTableModelChanged();, por que trate tambien de hacer que se ingresara texto desde un boton al la simpletableModel y funciono.

Estoy por pensar que el problema es del if o de la accion de tratar de obtener el dato u objeto seleccionado (osea esto articulo = choiceGroup.getSelectedIndex()Wink

Por que si logre ingresar texto a la simpleTableModel desde otra accion (un boton) quiere decir que el problema no es del simpleTableModel.fireTableModelChanged(); si no que puede estar entre el if o la obtencion de informacion

Si alguien mas sabe puede contribuir Cheesy
En línea

"Un matematico aplicando sus calculos a la naturaleza" Fisico.
tronador
Administrador
Vago degenerado
*
Desconectado Desconectado

Mensajes: 430


Linuxsss


Ver Perfil WWW
« Respuesta #3 en: 16 de Octubre de 2009, 10:44:36 »

y si haces

articulo = choiceGroup.getSelectedIndex();
System.out.println(articulo);

que sale? (ojo mira en donde dice Output en Netbeans, no en el emulador del cel)

Tambien revisa que en Output no este saliendo ninguna excepcion.

EDIT: Habras tenido en cuenta tambien que los indices de Java comienzan desde 0 al igual que en otros lenguajes de programacion, no?
« Última modificación: 17 de Octubre de 2009, 01:48:37 por tronador » En línea





Lozano
Desocupado
***
Desconectado Desconectado

Mensajes: 268


>>Paisalandia<<


Ver Perfil WWW
« Respuesta #4 en: 17 de Octubre de 2009, 09:38:07 »

y si haces

articulo = choiceGroup.getSelectedIndex();
System.out.println(articulo);

que sale? (ojo mira en donde dice Output en Netbeans, no en el emulador del cel)

jaja yo pensaba que el mensaje aparecia en el emulador xDD

En la salida del netbeans me sale el item 0 (logicamente por que esta seleccionado el primer articulo y por que como mas abajo especifica ud los items se leen apartir de 0 en adelante "eso ya lo habia leido")

EDIT: Habras tenido en cuenta tambien que los indices de Java comienzan desde 0 al igual que en otros lenguajes de programacion, no?

sizas

Pues con este resultado creo que mi hipótesis se confirma, el problema vendría siendo del if no?.
La cosa es que no se como arreglar el if, por otro lado me toca convertir el int en string para poder ingresar el nombre del articulo seleccionado en el simpleTabloModel (que mas o menos se como se hace) o creo que con el simpleTableModel.setValue(1, 1, "" + choiceGroup.getString(articulo)); ya queda solucionado este problema no lo tengo claro por el momento

Almenos ya quedo localizado el problema  Smiley. Lo que queda haciendo falta es la solucion Cry
« Última modificación: 17 de Octubre de 2009, 09:40:13 por Lozano » En línea

"Un matematico aplicando sus calculos a la naturaleza" Fisico.
tronador
Administrador
Vago degenerado
*
Desconectado Desconectado

Mensajes: 430


Linuxsss


Ver Perfil WWW
« Respuesta #5 en: 17 de Octubre de 2009, 12:16:24 »

pues si cambias el if a

if (articulo == 0)

Asi entraria al if, no entiendo cual es el problema  Grin
En línea





Lozano
Desocupado
***
Desconectado Desconectado

Mensajes: 268


>>Paisalandia<<


Ver Perfil WWW
« Respuesta #6 en: 26 de Octubre de 2009, 04:22:50 »

no entiendo cual es el problema  Grin

Parce vea, el problema es que quiero que el programa haga algo cuando selccione cualquier elemento(no importa el orden ni el numero de item ni el elemento que seleccione) del choicegroup(PopUp), que por ejemplo en un pseudo:

if (selecciono algun elemento del choicegroup) //No importa que elemento se halla seleccionado
{System.out.println(articulo_seleccionado);
}

Solo eso, quiero saber como hacer para que el programa identifique que articulo o elemento fue seleccionado de un choicegroup para despues de eso hacer alguna accion con el valor que devuelva ese elemento seleccionado. Concretamente quiero saber que codigo iria en el if:

if (selecciono algun elemento del choicegroup) //No importa que elemento se halla seleccionado
{
}

Solo es eso..

gracias por la colaboracion Tongue
En línea

"Un matematico aplicando sus calculos a la naturaleza" Fisico.
tronador
Administrador
Vago degenerado
*
Desconectado Desconectado

Mensajes: 430


Linuxsss


Ver Perfil WWW
« Respuesta #7 en: 26 de Octubre de 2009, 05:31:09 »

Regresando al codigo q colocaste en el primer post

Código:
int articulo;

articulo = choiceGroup.getSelectedIndex();

if (articulo == 1)
{
 System.out.println("Has seleccionado el articulo numero 2 de la lista");
 simpleTableModel.setValue(1, 1, "" + choiceGroup.getString(articulo));
 simpleTableModel.fireTableModelChanged();
}
else
{
 System.out.println("No has seleccionado el articulo 2, has seleccionado el articulo "+(articulo+1)+" de la lista");
}

Cual es la salida en el Output de Netbeans?

Para mi que no puedes tener error en algo tan trivial como un if, creo que es mas probable que haya error es al trabajar con el simpleTableModel.
« Última modificación: 26 de Octubre de 2009, 05:33:22 por tronador » En línea





Lozano
Desocupado
***
Desconectado Desconectado

Mensajes: 268


>>Paisalandia<<


Ver Perfil WWW
« Respuesta #8 en: 26 de Octubre de 2009, 05:55:15 »

a simple vista parece que el codigo suyo no presenta errores pero lo que yo quiero hacer es:

Que el programa al yo seleccionar algun item del choicegroup haga algo, no tiene que ser especificamente el 1 o el 0,  no, solo que reaccione si selecciono el 8 o el 2 o cualquiera y muestre un texto en la salida del netbeans

como mas arriba lo puse en pseudo

if (selecciono algun item){
System.out.println("Selecciono algo");
}
else{
System.out.println("No selecciono nada");
}

solo eso, pero no que sea o el item 1 o el 2, no, el que sea que selecciono el usuario que use el programa

Ahora si me entiende parce? Smiley

BN
En línea

"Un matematico aplicando sus calculos a la naturaleza" Fisico.
tronador
Administrador
Vago degenerado
*
Desconectado Desconectado

Mensajes: 430


Linuxsss


Ver Perfil WWW
« Respuesta #9 en: 26 de Octubre de 2009, 06:07:02 »

a simple vista parece que el codigo suyo no presenta errores pero lo que yo quiero hacer es:

Que el programa al yo seleccionar algun item del choicegroup haga algo, no tiene que ser especificamente el 1 o el 0,  no, solo que reaccione si selecciono el 8 o el 2 o cualquiera y muestre un texto en la salida del netbeans

como mas arriba lo puse en pseudo

if (selecciono algun item){
System.out.println("Selecciono algo");
}
else{
System.out.println("No selecciono nada");
}

solo eso, pero no que sea o el item 1 o el 2, no, el que sea que selecciono el usuario que use el programa

Ahora si me entiende parce? Smiley

BN


Por fin pude entender xD

if (choiceGroup.getSelectedIndex() != -1){
System.out.println("Selecciono algo");
}
else{
System.out.println("No selecciono nada");
}
« Última modificación: 26 de Octubre de 2009, 09:39:09 por tronador » En línea





7U4R36
Extranjero
*
Desconectado Desconectado

Mensajes: 43


Ver Perfil
« Respuesta #10 en: 26 de Octubre de 2009, 07:01:37 »

Y por que no intenta implementar el listener de este objeto:
http://www.j2mepolish.org/javadoc/j2me/de/enough/polish/ui/ChoiceGroup.html#setItemCommandListener(de.enough.polish.ui.ItemCommandListener)
Con el listener puede hacer que haga algo cada que pase una acción en específico (selección)
En línea
Lozano
Desocupado
***
Desconectado Desconectado

Mensajes: 268


>>Paisalandia<<


Ver Perfil WWW
« Respuesta #11 en: 27 de Octubre de 2009, 10:59:55 »


Por fin pude entender xD

if (choiceGroup.getSelectedIndex() != -1){
System.out.println("Selecciono algo");
}
else{
System.out.println("No selecciono nada");
}


Eso era lo que necesitaba parce!!, muchas gracias!.

Pero al cabo de provar este codigo me doy cuenta de que solo funciona cuando en el emulador se le da launch a la aplicacion (osea cuando se inicia la aplicacion) y no esta siempre esta activo, le puse un for y de todas formas no funciona.

Ahi el codigo:

Código:
  int selec;
            String nomselec;

            seleccion++; //Esta esta definido mas arriba como int seleccion =0;

            selec = choiceGroup.getSelectedIndex();
            nomselec = choiceGroup.getString(selec);

for ( i=0; i<seleccion; i++) {

    if (selec != -1){
System.out.println("Selecciono " + nomselec);
}
else{
System.out.println("No selecciono nada");
}

}

Ahora lo que trato de hacer es que en todo momento cuando selccione algun item del choicegroup me diga el nombre, osea que siempre el codigo que va en el choicegroup este activo y esperando a que el usuario seleccione algun item.

Me entiende?

Muchas gracias parce

Y por que no intenta implementar el listener de este objeto:
http://www.j2mepolish.org/javadoc/j2me/de/enough/polish/ui/ChoiceGroup.html#setItemCommandListener(de.enough.polish.ui.ItemCommandListener)
Con el listener puede hacer que haga algo cada que pase una acción en específico (selección)

ya lo habia visto pero no le habia visto utilidad (o por lo menos hasta el momento) para lo que trato de hacer, gracias de todas formas
En línea

"Un matematico aplicando sus calculos a la naturaleza" Fisico.
tronador
Administrador
Vago degenerado
*
Desconectado Desconectado

Mensajes: 430


Linuxsss


Ver Perfil WWW
« Respuesta #12 en: 27 de Octubre de 2009, 11:03:40 »

para poder ejecutar una tarea en todo momento mientras que haces otras cosas a la vez te toca usar hilos (Threads)

Lee por aca:

http://developers.sun.com/mobility/midp/articles/threading2/
En línea





7U4R36
Extranjero
*
Desconectado Desconectado

Mensajes: 43


Ver Perfil
« Respuesta #13 en: 27 de Octubre de 2009, 11:51:37 »

mmm pues lo que esta pidiendo se hace con un patrón de diseño que se llama OBSERVER y para usar ese patrón de diseño se utilizan los listeners. Con los listeners se logra que cada vez que se modifique un objeto se mande una notificación a quienes implementen el listener. Creo que utilizar threads es demasiado complejo para lo que quiere lograr, le recomiento que se pegue una leída del patrón de diseño que le comento o que vea algún ejemplo de swing con uso de listeners Wink
« Última modificación: 27 de Octubre de 2009, 11:55:44 por 7U4R36 » En línea
tronador
Administrador
Vago degenerado
*
Desconectado Desconectado

Mensajes: 430


Linuxsss


Ver Perfil WWW
« Respuesta #14 en: 28 de Octubre de 2009, 09:22:52 »

Pues si es cierto para eso precisamente se inventaron el patron Observer, Lozano mejor averigua sobre los listener que trae el ChoiceGroup y que sea eso lo que realice la acción al tener un cambio.

En línea





Páginas: [1] 2   Ir Arriba
  Imprimir  
 
Ir a:  

Modify by RPM.
Página creada en 0.087 segundos con 19 queries.