Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    Riempire una Jlist dalla selezione proveniente da un'altra jlist

    Ciao, ho necessità di aggiornare dinamicamente il contenuto di una jlist a seconda di cosa è stato selezionato in un'altra jlist (entrambe sono nella stessa finestra). Per cui quando apro il frame principale e nulla è selezionato nella jlist "figlia" non deve esserci nulla, mentre se seleziono qualcosa nella jlist "mamma" deve mostrarmi ciò che ho selezionato nella figlia.
    Ho creato i metodi per riempire la jlist figlia in base alla selezione dalla jlist mamma, credo correttamente, però se clicco su un elemento della mamma non succede niente, perché chiaramente la jlist figlia viene creata all'atto dell'apertura della finestra principale quando niente è stato ancora selezionato, quindi come posso risolvere questa cosa? Cosa mi serve?
    Grazie.

    edit: ho fatto un piccolo passo avanti, mettendo il codice che riempie la jlist figlia nel ListSelectionEvent della mamma, però così ogni volta che clicco su un elemento della mamma mi aggiunge in coda in nuovi elementi mentre io voglio che il contenuto della finestra figlia venga aggiornato a ogni clic coi nuovi dati, togliendo i vecchi!
    Ultima modifica di Jamie04; 11-04-2014 a 13:57

  2. #2
    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
    però se clicco su un elemento della mamma non succede niente, perché chiaramente la jlist figlia viene creata all'atto dell'apertura della finestra principale quando niente è stato ancora selezionato, quindi come posso risolvere questa cosa?
    Innanzitutto ti serve un listener, il ListSelectionListener per cui puoi sapere quando la selezione "cambia". A seguito di ogni cambiamento dovrai aggiornare il secondo JList. Come fare questo dipende da come puoi/vuoi legare insieme le due finestre e quindi (in)direttamente legare i due JList. E in sostanza dipende dal "design" delle classi, che può essere più o meno bello/elegante a seconda di quanto sai di OOP/design-pattern.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Ho già un listSelection listener che implementa valueChanged, il fatto è che non so come gestire i cambiamenti nella jlist figlia a seguito del cambio di selezione...

    Come fare questo dipende da come puoi/vuoi legare insieme le due finestre e quindi (in)direttamente legare i due JList
    Ecco appunto, come posso 'legare' questi due componenti?

    Sempre grazie.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Potrei aver risolto. Ecco il codice di valueChanged, dove menuList è la "mamma":

    codice:
    private void menuListValueChanged(javax.swing.event.ListSelectionEvent evt) {                                      
    
            int index = menuList.getSelectedIndex();
            if (index >= 0) {
                modelProductList.clear();
                Vector<Product> productVoices = DBConnection.fillProductList(selectedMenuId);
                for (int i = 0; i < productVoices.size(); i++) {
                    modelProductList.addElement((Product) productVoices.get(i));
                }
    
                bDeleteMenu.setEnabled(true);
                Menu selectedMenu = (Menu) menuList.getSelectedValue();
                selectedMenuId = selectedMenu.getMenuId();
                menuName.setText(selectedMenu.getMenuName());
                productName.setEnabled(true);
                productPrice.setEnabled(true);
                bAddProd.setEnabled(true);
                bCancelProd.setEnabled(true);
                bDeleteProd.setEnabled(true);
                newMenuIsSaved = false; //se ho selezionato un menu, rimetto a false la variabile
    
            } else {
                bDeleteMenu.setEnabled(false);
            }
        }
    Che ne pensi?
    Sembra funzionare...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.