Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    Ho fatto una prova veloce con una jlist e un campo di testo, ho legato il campo di testo alla jlist con la binding expression ${selectedElement}, così facendo quando clicco su un elemento della jlist mi mostra nel jtextfield l'elemento selezionato (roba per la quale io ho sprecato fiumi di codice ).
    Ho fatto una ricerca veloce ed ho trovato subito questo. Da quanto ho capito è l'utilizzo della specifica JSR-295 "Beans Binding". Tra l'altro non ho trovato (ma non ho cercato più di tanto comunque) un documento ufficiale sulla specifica, quindi mi viene da pensare che sia qualcosa di non più tanto portato avanti e/o obsoleto.
    In ogni caso, se si utilizza una implementazione di questa specifica, non è certo presente nel framework standard di Java SE ... devi comunque sicuramente portarti dietro qualcosa insieme all'applicazione.

    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    Esattamente questo.
    Supponendo selezione "singola" (giusto come caso più semplice), il punto fondamentale è la registrazione di un ListSelectionListener. Quando la selezione nella lista1 cambia, prendi il valore selezionato e lo usi in qualche modo per ottenere i dati da mettere nella lista2.
    Il punto critico è come/dove vengono presi i dati per la lista2. Se fossero semplici strutture dati (es. ad ogni elemento della lista1 è associato un array/List con altri dati), sarebbe relativamente semplice "legare" le due liste, eventualmente facendo un po' di "design" sulle classi in modo che sia, magari, abbastanza facilmente riutilizzabile.
    Se si trattasse di accedere ad un DB per prendere i dati, bisognerebbe fare altre valutazioni. Es. come viene usato il valore selezionato? Fa solo da "filtro" in una query ben precisa? O addirittura va a cambiare radicalmente la query?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Ho fatto una ricerca veloce ed ho trovato subito questo. Da quanto ho capito è l'utilizzo della specifica JSR-295 "Beans Binding". Tra l'altro non ho trovato (ma non ho cercato più di tanto comunque) un documento ufficiale sulla specifica, quindi mi viene da pensare che sia qualcosa di non più tanto portato avanti e/o obsoleto.
    Sì è lo stesso link che stavo leggendo io, ho fatto anche delle prove, ma direi che è meglio scartarlo, anche perché genera un mucchio di codice che non comprendo e mi sembra pure pesantino, ci mette più tempo a caricare la form dove sono abilitate quelle cose.


    Quote Originariamente inviata da andbin Visualizza il messaggio
    Supponendo selezione "singola" (giusto come caso più semplice), il punto fondamentale è la registrazione di un ListSelectionListener. Quando la selezione nella lista1 cambia, prendi il valore selezionato e lo usi in qualche modo per ottenere i dati da mettere nella lista2.
    Il punto critico è come/dove vengono presi i dati per la lista2. Se fossero semplici strutture dati (es. ad ogni elemento della lista1 è associato un array/List con altri dati), sarebbe relativamente semplice "legare" le due liste, eventualmente facendo un po' di "design" sulle classi in modo che sia, magari, abbastanza facilmente riutilizzabile.
    Se si trattasse di accedere ad un DB per prendere i dati, bisognerebbe fare altre valutazioni. Es. come viene usato il valore selezionato? Fa solo da "filtro" in una query ben precisa? O addirittura va a cambiare radicalmente la query?
    La selezione è singola. Guarda ti metto uno screenshot di come è la maschera attualmente che forse vale più di mille parole:
    Untitled-1.jpg
    La jlist a sx è quella delle categorie. Se clicco su una categoria (selezione singola) nella jlist di dx mi compaiono i prodotti di quella categoria.
    I dati nella lista2 (quella dei prodotti) vengono presi da un vector che viene generato a seconda dell'id del menu selezionato nella lista1, quindi ho un metodo che mi ritorna questo vettore a seconda dell'id della categoria che gli passo.
    I dati sono in un db mysql.
    Tanto per chiarire meglio questo è il metodo che chiamo per riempire la jlist2:

    codice:
        private void reloadProductList() {
            modelProductList.clear();
            if (newMenuIsSaved) {
                Vector<Product> productVoices = DBConnection.fillProductList(newMenuId);
                for (int i = 0; i < productVoices.size(); i++) {
                    modelProductList.addElement((Product) productVoices.get(i));
                }
            } else {
                Vector<Product> productVoices = DBConnection.fillProductList(selectedMenuId);
                for (int i = 0; i < productVoices.size(); i++) {
                    modelProductList.addElement((Product) productVoices.get(i));
                }
    
            }
        }
    Non ho capito questa tua domanda:
    "Es. come viene usato il valore selezionato? Fa solo da "filtro" in una query ben precisa? O addirittura va a cambiare radicalmente la query"

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    La selezione è singola. Guarda ti metto uno screenshot di come è la maschera attualmente che forse vale più di mille parole:
    Lo screenshot lo vedo .... solo che a prima vista la schermata mi pare un pochino "caotica", nel senso che ci sono svariati pulsanti di cui non è chiaro (almeno per me che non conosco l'uso della applicazione) cosa fanno e su cosa.

    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    La jlist a sx è quella delle categorie. Se clicco su una categoria (selezione singola) nella jlist di dx mi compaiono i prodotti di quella categoria.
    I dati nella lista2 (quella dei prodotti) vengono presi da un vector che viene generato a seconda dell'id del menu selezionato nella lista1, quindi ho un metodo che mi ritorna questo vettore a seconda dell'id della categoria che gli passo.
    I dati sono in un db mysql.
    E quindi la problematica quale è esattamente? La logica di base è banale: quando in jlist1 cambia la selezione, si prende il valore selezionato e lo si usa per ottenere la lista da visualizzare in jlist2. Tutto qui. E come prendere la lista da visualizzare mi pare di vedere che l'hai già fatto.

    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    codice:
            if (newMenuIsSaved) {
                Vector<Product> productVoices = DBConnection.fillProductList(newMenuId);
                for (int i = 0; i < productVoices.size(); i++) {
                    modelProductList.addElement((Product) productVoices.get(i));
                }
            } else {
                Vector<Product> productVoices = DBConnection.fillProductList(selectedMenuId);
                for (int i = 0; i < productVoices.size(); i++) {
                    modelProductList.addElement((Product) productVoices.get(i));
                }
            }
    Io però non ho capito il perché del doppio "flusso" in cui cambia solo il parametro a fillProductList.

    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    Non ho capito questa tua domanda:
    "Es. come viene usato il valore selezionato? Fa solo da "filtro" in una query ben precisa? O addirittura va a cambiare radicalmente la query"
    Era solo per dire in generale .... il valore selezionato può essere usato in modi ben differenti a seconda dei casi. Potrebbe essere un semplice filtro nella select es. ..... WHERE campoDiFiltro=valoreselezionato oppure potrebbe causare l'uso di query ben differenti, es. se valore 1 prendi dalla tabella X, se valore 2 prendi dalla tabella Y o ancora altri scenari. Io ovviamente non lo so .....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Lo screenshot lo vedo .... solo che a prima vista la schermata mi pare un pochino "caotica", nel senso che ci sono svariati pulsanti di cui non è chiaro (almeno per me che non conosco l'uso della applicazione) cosa fanno e su cosa.
    quelli in alto a dx sono per l'inserimento/modifica/eliminazione del menu, quelli più in basso sono relativi ai prodotti.


    Io però non ho capito il perché del doppio "flusso" in cui cambia solo il parametro a fillProductList.
    ho dovuto farlo perché quando si inserisce un nuovo menu non era possibile prendere l'id del menu selezionato dalla jlist1, chiaramente...cioè ho dovuto distinguere fra il caso della normale selezione di un menu esistente e quello di un menu appena inserito.
    Il problema, come ho detto nel post in cui ha avuto inizio la discussione, è che quando modifico un menu (il nome) devo per forza di cose ricaricare la jlist1 (altrimenti continuerei a vedere il vecchio nome finché non chiudo e riapro la finestra), in questo modo perdo dunque la "selezione" e se provo a inserire un prodotto nel menu modificato ottengo un NPE, se invece seleziono un altro menu non ho problemi.
    Inoltre ho il pulsante di ricerca articoli che se trova un match con la ricerca me lo mostra nella jlist degli articoli ma io vorrei anche che oltre a mostrarmi l'articolo trovato mi punti l'indice della jlist1 della categoria a quella cui appartiene e questo secondo punto non so farlo.
    Mi è stato suggerito di aggiungere un ListSelectionListener a menuList e fare in modo che il gestore imposti il model di productList per visualizzare i dettagli della riga selezionata...ma sinceramente non ho ben capito come implementare questa cosa!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.