como recorrer un checboxtree

Estoy ocupando este jtree con checkbox para dar privilegios a usuarios dentro de un sistema, programando en java con base de datos mysql

como recorrer y determinar que checkbostree a sido seleccionado...
Tengo un jtreecheckbox que lo cargo de la base de datos ocupando tres tablas mas que nada son 5 tablas..
la primera tabla es de
1 tbl_menu
2 tbl_opciones
3 tbl_operaciones

estas tablas se componen de dos campos, la clave o id, y un campo descripción

tabla 1 almaceno lo que son los menús de mi programa
1- Archivo
2- Iniciar sesión
3- Cerrar sesión
4- Catálogos.
5- Asignaciones
6- Ajustes

tabla 2 almaceno las opciones
1- Empresas
2- Sucursales
3- Empleados
4- Puestos
5- Asignar puesto
6- Reportes

tabla 3 aquí es donde se guardar todas las operaciones que puede hacer un usuario

1- Registrar
2- Actualizar
3- Eliminar
4- Generar reporte
5- Imprimir
6.- Generar otras claves
etc
---------------------------------------------------------------------------------------------------------------------------------

tengo dos tablas mas que relaciono la 2 tabla con la tercera

4 tbl_opcion_oper en esta tabla se relaciona con tbl_opciones, y tbl_operaciones

quedando de la siguiente forma ya relacionado aquí tomando en cuenta que la primera columna es el id_ llave primaria, el segundo campo es se relaciona con el ide de la tabla opciones y la tercera con la tabla operaciones, estos dos últimos campos almacenan las claves foraneas

1,1,1
2,1,2
3,1,3
4,2,1
5,2,2
6,2,3

4.- tbl_menu_opciones la tercera tabla la cual se relaciona la tabla anterior que es la 4 con la primera tabla que es de tbl_menu
quedando dela siguiente forma; compuesto por 3 campos la primera es el id de la tabla es la llave primaria, el siguiente campo es la que se relaciona con la tabla tbl_menu, y el ultimo campo se relaciona con la tabla tbl_opcion_oper, estos dos ultimos campos almacenan las claves foráneas..

aclaro que las primeras 3 opciones del menú no se relacionan con ninguna de la tabla opciones ni operación (se relaciona directamente con la tavla tbl_menu_opciones

quedando de la siguiente manera

1, 1, null
2, 2, null
3, 3, null
4, 4, 1
5, 4, 2
6, 4, 3

asi sucesivamente va..

al final tengo una vista la cual muetro todo..

al cargar el jtre con la base de datos queda asi.....

  • bueno lo que no se como recorrer todo el arbol y determinar los checbox seleccionado o marcado
    y asi obtener el ide de la hoja seleccionado.. y guardarlo en una tabla que seran los privilegios y posteriormente relacionarlo con la tabla de usuarios que accesen al sistema

    tengo este pequeño codigo que hace eso pero solo lo seleccionado, y recoje los nombres como quiero.. pero seria de uno en uno
     

    y lo muestra asi

  • pero lo que yo quiero es como acer unrecorrido total para sacar todos los datos seleccionados, y posteriormente hacer una consulta a la base de datos y objetner los ide de la tabla tbl_menu_operaciones y esto guardarlo en una tabla de privilegios
    tengo este codigo para obetener todos los contenidos del arbol

    el codigo es lo siguiente

     

    la salida es esto, pero no me muestra los nodos principales de cada seccion

  • espero que me den ideas como hacerle..
    y me echen la mano, esque asignar privilegios de este modo es complicado, mas manejando jtree

    Opciones de visualización de comentarios

    Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

    Re: como recorrer un checboxtree

     

    Aquí hay un ejemplo de recorrido de un  :

     

    ¡Por si sirve de algo!

    ~~~

    Imagen de pechsclk

    ejemplo de recorrido de un CheckboxTree

    jpaul justo lo que necesito para hacer el recorrido y determinar los checkbox de cada nodo si esta seleccionado...
    pero aun me surgen dudas como obtener los id's correspondientes para guardar en una tablamuy aparte.....
    nuca he trabajado...con este componente..

    Re: id

     

    En mi ejemplo, la clase   funge como modelo y contiene el  . Tiene sobreescrito el método   para mostrar el texto correspondiente en el menú.

    Cada nodo se contruye utilizando una instancia de tal clase:

     

    Y cuando se recorre, el   se obtiene:

     
    ~~~

    Imagen de pechsclk

    lo checare

    lo checare porque bien, porque tu lo cargas con parametro.. como un ArraList para despues ponerlo en el modelo del jtree
     
    adecuenta que el ide de cada nodo ya esta en cada nodo... o me equivoco....
    bueno yo las cargue de diferente forma con respecto a la tabla de la base de datos fui cargando los nodos..
    aki el codigo

     

    pero igual. lo analizare..bien... porque he estado dando de topes a la cabeza

    Re: ArraList

     

    Por cierto, tal vez quieras también mostrar aquellas opciones que ya antes habías seleccionado (guardado en la base de datos) para modificarlas. Siguiendo el mismo ejemplo:

     

    ~~~

    Imagen de pechsclk

    Me marca errores

    en tu segundo ejemplo me carga error en
     
    esto es lo que me marca
    Tipo de Lista no toma parámetros
     
    con el mismo eror
     
    por ultimo estas dos lineas marca lo mismo
     

    Imagen de pechsclk

    Hice unas modificaciones y ya salio bueno en el ejemplo

    estas son las modificaciones que hice

    Antes taba asi
     
    ahora lo puse asi
     
    y donde tenias List nomas le agrege ArrayList solamente asi me dejo de marcar error

    Re: error

    Seguramente el IDE importó la clase   en lugar de  . Código completo aquí .

    Imagen de pechsclk

    Seguramente el IDE importó la clase java.awt.List

    Si ya vi que si funciona asi como posteaste el ejemplo.. si importo diferente mi ide....
    pero segire checando esto con la base de datos

    Imagen de pechsclk

    Cargue Jtree con base de datos

    Cargue el JTreeCheck con base de datos, asi como en el ejemplo

  • logre cargarlo con base de datos como realmente quiero, ya los ids principal de cada opcion ya esta cargado.. asi nomas seleccionar, pues se obtendria el id_principal para guardar en una tabla los id_seleccionados, junto con la clave de usuarios..

    hasta aqui todo bien...
    pero me a sugido un inconveniente.. aki la imagen

  • Si selecciono el nodo el menu Asignaciones, y posteriormente la opcion Asignaciones, y posterior mente las operaciones ya aparecen seleccionados, hasta ahi todo bien no, pero suponiendo que no se quiere dar todas esas operaciones de Asignar, Reasignar, Generar codigo manual, al deseleccionar unas de esas operaciones. se desactiva el modo principal que esta en el primer nivel y el segundo nivel, y esto no deveria aser, alguna idea de como controlar esto....

    Re: se desactiva

    … se desactiva el modo principal que esta en el primer nivel y el segundo nivel, y esto no deveria aser, alguna idea de como controlar esto....

    Cambia el  :

     

    P.D. Esto es utilizando   de http://bit.ly/1dM5wkR .

    ~~~

    Imagen de pechsclk

    porque no me toma en cue ta los nodos

    porque no toma en cuanta los nodos que estan seleccionados...

    Imagen de pechsclk

    al parecer lo que deseaba lo corregir de este modo

    al momento de hacer la comparacion en
    del nodo lo cambie de la siguiente forma
     
    lo cambie a esta forma
     

    y asi me toma en cuenta en nodo

    Imagen de pechsclk

    al parecer lo que deseaba lo corregir de este modo

    al momento de hacer la comparacion en
    del nodo lo cambie de la siguiente forma
     
    lo cambie a esta forma
     

    y asi me toma en cuenta en nodo

    Re: nodos

    … no toma en cuanta los nodos que estan seleccionados…

    Cada hoja debería ser un privilegio y los nodos, sólo la forma de clasificarlos, no un privilegio en sí mismo.

    Imagen de pechsclk

    Cada nodo deberia ser un provilegio

    tienes razón los nodos es una clasificación
    porque con este codigo
     
    al momento de cargar al usuario con sus privilegios desde la base de datos, para hacerle un cambio o agregarle un privilegio mas.. no se mostraría el nodo seleccionado en el árbol.
    pero con este código si
     
    -------------------------------------------------------------------------------------------------------------------------------------------------------
    lo que yo pienso tomar el nodo como un item en mi menu principal, y si ese nodo fue tomado como true o false, pues lo mostraria habilitado o deshabilitado...

    Re: habilitado o deshabilitado

     

    En mi opinión, no deberían mostrarse. ¡A menos que el cliente lo pida! No obstante, si muestras algo deshabilitado, eso significa que el usuario debe hacer algo para habilitarlo. Ejemplo:


    P.D.: Te recomiendo el libro Designing Interfaces, 2nd Edition de Jenifer Tidwell. Hay una vista previa en Google Books. También está el sitio web del libro.

    ~~~

    Imagen de pechsclk

    En mi opinión, no deberían mostrarse.

    Si comprendo, que el usuario final se sorprendería el porque esta deshabilitado esa opción o el menú esta deshabilitado...
    lo que quiero como resultado final en mi ventana principal las opciones del menú, se activen de acuerdo al privilegio.
    aquí la imagen

  • ahora que ya estoy implementado, creo que ya me salieron otras dudas.
    ya construí la tabla de usuarios y la tabla de privilegios, la cual la.
    tbl_user tiene 4 campos
    clav_user int incremental llave primaria
    nombre varchar
    user varchar
    contra longblob
    y posteriormente tengo la tabla de privilegios con 4 campos

    tbl_privilegios
    clav_privilegio int auto_increment llave primaria
    clav_user int
    clav_menuopc int
    privilegio bit
    en la cual se guardar de esta forma

    la clave de usuario, la clave del menu_opcion, y el privilegio si fue seleccionado captura un true, de lo contrario un false, hasta aquí todo bien.
    cuando yo quiera actualizar los privilegios..al usuario. no se 1semana después deseo agregarle otras o quitarle algunos.. pues es necesario..
    bueno aquí ya me enrede..
    cuando guardo los privilegios, recorro todo el árbol.. y extraigo todos los ids, del árbol y posteriormente si esta seleccionado, ya vez que retorna un false, o un true, capturo estos boleanos que lo guardo en un campo bit, que ocuparía para activar los menús item en mi ventana principal, los opciones.
    --------------------------------------------------------------------------------
    bueno dependiendo de usuario y la clave de la opción del menu_opcion que se a seleccionado, nomas recupero de la tabla los que tienen como true y los demás no las recupero, esto con el fin de mostrar los elementos seleccionado anteriormente en el jtree cuando fue registrado la ultima vez.
    aki muestro al asignarle por primera vez los privilegios.. al usuario

  • como se dan cuenta en la parte de ajustes nomas se selecciona los privilegios de - Ajustes datos responsiva - Actualizar..

    pero cuando se recupera desde la base de datos los privilegios seleccionados, la muestra a si

  • la opción -Ajustes de datos inventario - Actualizar estas dos opciones no fueron seleccionados, pero al recuperar y mostrarla la selecciona y no debe ser creo que es por la linea de código
     

    pero seguire checando aver que pasa..

    Imagen de pechsclk

    Cada hoja debería ser un privilegio y los nodos

    Es correcto JPaul los nodos no se deben capturar, estube checando sii, al momento de recuperar la id del nodo de la base de datos,
    son los que hace que se activen los demas ramas o nodos decendites... y si no se captura. pues todo queda bien, solamente se activan los que realmente fue registrado

    Re: todo queda bien

    ¡Ja! Sólo espero que la empresa ya te libere. Bueno, sé que algunas empresas dan un apoyo mensual por prácticas. Ojalá sea tu caso.

    Imagen de pechsclk

    Sólo espero que la empresa ya te libere

    pinzo que es necesario capturar el nodo, nomas que al momento de recuperar los ids de la base de datos los voy a excluir, aunque no es estético.y solo recuperar los ids de las ojas....
    ---------------------------------------------------------------------------------------------------------------------------------------------
    pues nombre aqui solo nos explotan.. nos an dicho que al final nos van a dar una feria,.
    pero pues hasta ahorita nomas nos apoyan con un vale de comida a medio día. de ahi en fuera solo eso..
    pero si he estado batallando, pero ahora solo vengo dos días a la semana....
    --------------------------------------------------------------------------------------------------------------------------------------------------------

    Gracias jpaul. por tus recomendaciones, y pues por ejemplos que me proporcionas, la mera verdad me han servidor..
    de por si aquí creo que voy a seguir posteando mis dudas.. que en ese foro me han resuelto las dudas..