Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Ambiente SWING

  1. #1
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577

    Ambiente SWING

    Salve

    piccolo problemino con l'ambiente Swing ...

    Premetto che nn ho mai utlizzato java per costrire un applicazione con interfaccia grafica quindi immagino che le mie domande siano di livello molto basso

    Allora ho costruito lì'intera interfaccia dell'applicazione con NetBeans e diciamo che ad esempio il mio problema principale è che in tutta l'applicazione ho almeno 6-7 jComboBox che visualizzano tutte la stessa lista di oggetti (che chiamerò ListObj) , ovviamente ognuna di queste JCOmboBox si trova in panel diversi , possiamo dire grosso modo che in ogni panel faccio un diverso tipo di operazione su listObj.

    Il Problema adesso è che se faccio una modifica sulla lista, ad esempio listObj.add(element) devo puntare direttamente a tutte le Jcombobox e quindi ripetere 6-7 righe di codice come la seguente myJCombo.addItem(element);

    Sono sicuro che questo metodo sia il metodo piu brutale che esiste per gestire questa cosa , infatti ho letto anche questa pillola che sembra faccia a caso mio ma nn riesco proprio a capire come utilizzarla.


    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Ambiente SWING

    Originariamente inviato da GabbOne
    Il Problema adesso è che se faccio una modifica sulla lista, ad esempio listObj.add(element) devo puntare direttamente a tutte le Jcombobox e quindi ripetere 6-7 righe di codice come la seguente myJCombo.addItem(element);

    Sono sicuro che questo metodo sia il metodo piu brutale che esiste per gestire questa cosa ,
    Sì ... non è il massimo. C'è una soluzione migliore e più pulita (specialmente visto il fatto che vuoi aggiornare più JComboBox allo stesso modo). Ovvero: fare in modo che tutti i JComboBox usino lo stesso identico oggetto ComboBoxModel.

    codice:
    // Puoi passare già qualcosa al costruttore (vedi javadoc) o invocare degli addElement() per aggiungere elementi al model
    DefaultComboBoxModel model = new DefaultComboBoxModel();
    
    comboBox1 = new JComboBox(model);
    comboBox2 = new JComboBox(model);
    comboBox3 = new JComboBox(model);
    .....
    Tutti i JComboBox hanno un riferimento allo stesso identico oggetto del model. Quando vuoi aggiungere/togliere qualcosa basta usare direttamente i metodi del model e in automatico tutti i JComboBox verranno aggiornati!
    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 L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    grazie andbin per la dritta , anche se ho dovuto cabiare una cosa che nn capisco per quele motivo nn funzioni , posto un po di codice per far vedere come ho risolto il problema

    codice:
    Vector v = new Vector (listRoles());
    model = new DefaultComboBoxModel(v);
    
            ruoloComboBox.setModel(model);
            superRuoloComboBox.setModel(model);
            listRoleComboBox.setModel(model);
            ruoliToPermessiComboBox.setModel(model);
    non riesco a capire perche invece in quest'altra maniera nn funzioni , lasciandomi tutte le combobox vuote anche se il model è settato correttamente (cio fatto qualche test sopra)

    codice:
    Vector v = new Vector (listRoles());
    model = new DefaultComboBoxModel(v);
    
            ruoloComboBox = new JComboBox(model);
    
            superRuoloComboBox = new JComboBox(model);
    
            listRoleComboBox = new JComboBox(model);
    
            ruoliToPermessiComboBox = new JComboBox(model);
    sarà dovuto forse alle innumerevoli operazioni che netbeans fa in background sul codice ,

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da GabbOne
    sarà dovuto forse alle innumerevoli operazioni che netbeans fa in background sul codice ,
    Entrambi i modi sono corretti ... almeno per la parte di codice che hai mostrato. Cioè concettualmente "quadrano".

    Se non ti funziona sarà sicuramente per qualche altro motivo ... più subdolo. Il primo che mi viene in mente: dopo che hai fatto, per es., quel

    ruoloComboBox = new JComboBox(model);

    questo 'ruoloComboBox' è proprio quello che poi aggiungi ad un certo tuo contenitore??? Cioè non è che per caso hai già istanziato da qualche altra parte il combo e aggiunto al contenitore??
    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 L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    penso che il problema sia proprio questo , poiche guardando su internet ho visto che tutti gli oggetti swing vengono visti come elementi da aggiunere a qualche contenitore (tipo contenitore.add(oggetto) ma con netbeans questo avviene in maniera trasparente al programmatore ed infatti lo fai lui per te quando utlizzi l'ide per creare l'interfaccia grafica dell'applicazione ... ma queste sono tutte supposizioni

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da GabbOne
    ma con netbeans questo avviene in maniera trasparente al programmatore ed infatti lo fai lui per te quando utlizzi l'ide per creare l'interfaccia grafica dell'applicazione
    Io in genere consiglio sempre di NON farsi mai generare il codice per la interfaccia grafica da un IDE.

    Per altre cose potrebbe anche andare bene la "auto" generazione. Sto facendo un progetto per lavoro con Eclipse e avendo svariate classi "bean" con parecchie proprietà ho trovato molto utile la funzione che mi genera in automatico i getter/setter. Sono brevi, chiari e ripetitivi e me li fa come è logico aspettarsi. Ma per la interfaccia utente no, meglio scriversela a "manina".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    sempre in relazione a qusete JCombo è possibilie simulare da codice un click su di esse ?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da GabbOne
    sempre in relazione a qusete JCombo è possibilie simulare da codice un click su di esse ?
    Vuoi banalmente selezionare un elemento? setSelectedIndex() o setSelectedItem().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.