Visualizzazione dei risultati da 1 a 10 su 13

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Per aggiornare un JList innanzitutto è necessario che la implementazione del ListModel sia "mutabile", ovvero offra metodi es. add, insert, ecc.... che permettano di cambiarne il contenuto. E questi metodi devono correttamente aggiornare la struttura dati interna al model e poi notificare la "view" (in generale qualunque ListDataListener registrato) delle modifiche. Tutto qui.

    Si può anche aggiornare un JList andando a sostituire il ListModel con un altro ma è decisamente più "radicale".

    P.S.
    codice:
            menuList.setModel(new javax.swing.AbstractListModel() {
                public int getSize() { return menuVoices.size(); }
                public Object getElementAt(int i) { return menuVoices.get(i); }
            });

    Questa implementazione di ListModel non è "mutabile" nel senso che ho detto poco fa. Se anche tenessi il riferimento menuVoices e facessi degli add, non avresti il risultato voluto .... il list model non "sa" che hai aggiunto dati dall'esterno.
    Il problema è che questo codice me l'ha generato NetBeans e non me lo fa modificare se non parzialmente :-/
    Ma dovrei usare quindi DefaultListModel? E poi?
    Grazie.

  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
    Il problema è che questo codice me l'ha generato NetBeans e non me lo fa modificare se non parzialmente :-/
    Classiche "rotture" dei GUI editor .... che io personalmente eviterei come la peste .....

    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    Ma dovrei usare quindi DefaultListModel?
    Sì, se non hai necessità particolari può andare bene. È "mutabile", è basato internamente su un Vector e da Java 7 l'hanno pure reso "generico" (puoi usare i generics).
    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
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Classiche "rotture" dei GUI editor .... che io personalmente eviterei come la peste .....
    E tu hai ragione ma onestamente l'idea di fare tutta la grafica a mano mi turbava parecchio, anche perché sono una mezza schiappa. Così ho fatto molto più in fretta. Il risvolto della medaglia è che per cambiare qualcosa devi lanciare imprecazioni in aramaico...
    Comunque, dovrei fare qualcosa del genere:

    codice:
    DefaultListModel model=new DefaultListModel();
        model.addElement(menuVoices);
    JList menuList= new JList(model);
            jScrollPane1.setViewportView(menuList);
    ?

    Il punto è che mi da errore su
    model.addElement(menuVoices);

    dicendo
    package model does not exist

    ma che vuol dire? model è una variabile che ho appena dichiarato che punta a un oggetto DefaultListModel!

  4. #4
    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
    Il punto è che mi da errore su
    model.addElement(menuVoices);

    dicendo
    package model does not exist

    ma che vuol dire?
    Beh, non lo so di preciso, potrebbe esserci altro che dà problemi, che so qualcosa a livello di sintassi in un'altra parte.

    Comunque menuVoices cos'é? Un List? Non credo sia appropriato per te. Se hai già un array/collezione con N elementi, devi aggiungerli uno per uno nel DefaultListModel.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Beh, non lo so di preciso, potrebbe esserci altro che dà problemi, che so qualcosa a livello di sintassi in un'altra parte.
    ho capito dov'è l'errore, è che model devo usarlo più avanti, non lì

    Quote Originariamente inviata da andbin Visualizza il messaggio
    Comunque menuVoices cos'é? Un List? Non credo sia appropriato per te. Se hai già un array/collezione con N elementi, devi aggiungerli uno per uno nel DefaultListModel.
    è un vettore

    ho provato a fare così:

    codice:
    menuList = new javax.swing.JList(model);
    for (int i=0; i<menuVoices.size(); i++) {
    model.addElement(menuVoices.get(i));
    }
    jScrollPane1.setViewportView(menuList);
    però non va lo stesso

    EDIT: FUNZIONA!!! Mancava questa istruzione
    model.addElement(menuName.getText());

    da mettere nell'azione del pulsante 'salva' premuto!!!

    Grazie mille!!!
    Ultima modifica di Jamie04; 20-03-2014 a 19:03

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.