Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    26

    JComboBox: modificare la lista delle opzioni disponibili

    Ciao, mi sono appena registrato
    avrei un problema con una JComboBox

    vi descrivo cosa ho davanti e poi vi faccio la domanda
    Allora ..
    Ho un applicazione dove cliccando su una voce del menu si apre un
    frame con un pannello e una tabella, e un campo della tabella con il JComboBox
    dove l'utente puo' selezionare un opzione tra una lista di CATEGORIE

    Poi dal menu principale dell'applicazione, abbiamo una voce dove è possibile aggiungere e togliere voci a una tabella che putacaso è l'elenco delle categorie che devo essere rese disponibili nel JComboBox del frame precedente

    ora quello che mi serve è questo...
    una volta che io aggiungo e/o tolgo categorie dalla lista tramite il secondo frame e tutto il resto
    quando poi apro il primo frame e vado sul jcombobox mi deve comparire la lista aggiornata
    con le categorie appena aggiunte ... o tolte.. insomma l'elenco aggiornato

    Come faccio ?
    Come e dove aggiorno la lista


    Per gestire l'evento faccio un ActionListener e lo aggiungo al JcomboBox o uso AddItemLister ?
    Per aggiornare cambio il vettore che ho passato in precedenza al combobox ?
    ma il vettore lo dovrei allungare e accorciare ... In C so cambiare la dimensione dinamicamente di un vettore .. in java non credo che se po fa, non ho malloc sotto le mani

    Oppure mi invento qualcosa usando in modo combinato AddItem e RemoveItem ?

    E per quando riguarda i ComboBoxModel e il SetModel ? C'entrano qualcosa ?

    insomma confusione tanta, certezze poche ..
    che mi dite ?

    Grazie anticipatamente a tutti
    ciao Alessandro

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Poi dal menu principale dell'applicazione, abbiamo una voce dove è possibile aggiungere e togliere voci a una tabella che putacaso è l'elenco delle categorie che devo essere rese disponibili nel JComboBox del frame precedente

    ora quello che mi serve è questo...
    una volta che io aggiungo e/o tolgo categorie dalla lista tramite il secondo frame e tutto il resto
    quando poi apro il primo frame e vado sul jcombobox mi deve comparire la lista aggiornata
    con le categorie appena aggiunte ... o tolte.. insomma l'elenco aggiornato

    Come faccio ?
    Come e dove aggiorno la lista
    Listener sulla parte che ti permette di aggiungere/rimuovere le voci della JcomboBox. Il listener usa i metodi addItem() e removeItem della JComboBox e chiama un repaint() sulla stessa alla fine.

    Per aggiornare cambio il vettore che ho passato in precedenza al combobox ?
    ma il vettore lo dovrei allungare e accorciare ... In C so cambiare la dimensione dinamicamente di un vettore .. in java non credo che se po fa, non ho malloc sotto le mani
    No, il vettore non occorre che lo cambi. Cmq, se per vettore intendi un array (quelle cose con []), non e' possibile allungarlo e accorciarlo, se per vettore intendi un Vectors, questa struttura e' dinamica e si allunga e accorcia da sola.

    Scusa la vaghezza delle risposte, ma anche le domande sono un po' vaghe. Se magari non hai capito bene, posta i pezzi di codice interessati dall'operazione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    26
    e lo so ... so stato un po vago perche volevo prima capire cosa fare a livello concettuale
    ora vedo di provare a sistemare seguendo le tue prime indicazioni ...

    provo a mettere un listener sul jcombobox
    e a usare additem removeitem...

    unico dubbio ...
    io ho passato al JComboBox un vettore chiamato av
    creato leggendo una hashtable chiamata categoria

    cosi facendo posso "allungare e accorciare" il vettore con additem e removeitem
    dall action perfomed del lister che sto per creare ?

    Enumeration keys = this.categoria.elements();

    av = new String [this.categoria.size()];
    int a = 0;
    while ( keys.hasMoreElements() )
    {
    av[a] = (String)keys.nextElement();
    a++;
    }

    cb = new JComboBox(av);
    il punto è che la hashtable ovviamente cambia dimensione di continuo
    e ogni volta devo aggiornare l'elenco delle opzioni disponibili nel JComboBox

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Il listener non va su JComboBox, ma sul componente che usi per togliere aggiungere le voci dalla stessa (quella cosa nel menu, immagino). Quel discorso del vettore non l'ho troppo capito. Tu hai un hashtable, OK, ci estrai un array (o vettore, come preferisci), passi l'array al JComboBox e mandi la JComboBox a video. Fin qua ci siamo. Se la hashtable ti cambia successivamente, il vettore che hai estratto non cambia, e nemmeno la JComboBox.
    Cos'e' che fa cambiare la HashTable?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    26
    Originariamente inviato da simo7784
    Il listener non va su JComboBox, ma sul componente che usi per togliere aggiungere le voci dalla stessa (quella cosa nel menu, immagino). Quel discorso del vettore non l'ho troppo capito. Tu hai un hashtable, OK, ci estrai un array (o vettore, come preferisci), passi l'array al JComboBox e mandi la JComboBox a video. Fin qua ci siamo.
    ok
    Se la hashtable ti cambia successivamente, il vettore che hai estratto non cambia, e nemmeno la JComboBox.
    esatto
    e io devo fare in modo che quando l'utente usa la jcombobox per scegliere un opzione
    abbia la lista aggiornata
    Cos'e' che fa cambiare la HashTable?
    L hashtable si aggiorna quando un utente nell'altro frame prima descritto
    sceglie di creare o eliminare una categoria
    in quel momento viene aggiunta o tolta una voce nell hashtable

    .. ora posto un paio di immagini e spiego meglio :P

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    26


    i dati che vengono visualizzati in questa tabella sono immagazzinati in una hashtable
    al momento della creazione di una nuova categoria
    o dell' eliminazione di una categoria
    l'hashtable viene aggiornata




    in quest altro frame invece abbiamo un elenco di file nella prima tabella
    cliccando su un file, nella tabella sottostante è possibile associare informazioni al file

    tra queste informazioni è possibile mettere la categoria a cui vogliamo assegnarlo!

    ora l'elenco delle categorie visualizzate dal JComboBox deve essere sempre aggiornato con quello nella Hashtable
    ----------------

    per ora invece se l'utente crea una nuova categoria o ne elimina una
    la lista del JComboBox non viene aggiornata

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Quando si attiva lo stesso evento che aggiorna l'hashTable, in caso di del rimuovi l'item corrispondente dalla JComboBox e fai un repaint. In caso di add, inserisci un nuovo item nella JComboBox e fai un repaint. Non funziona?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    26
    mm ora ci provo come dici te
    solo che è un po complicato perche il progetto è un po grande ed è tutto un passare di parametri a destra e sinistra, me ce perdo

    non è tutta opera mia, sto continuando il progetto di un altro ragazzo

    prima provo in un altro modo piu spartano ...
    altrimenti faro' come dici te :P


    Sinceramente non mi interessa che la JComboBox sia aggiornata a ogni cambiamento dell' hash
    mi basta che quando viene cliccata si aggiorni in quel momento...

    sto facendo una zozzata...
    quando l'utente clicca sul jcombobox, questa si rilegge l'hash :P
    stesso risultato... meno elegante ... sempre che funge

    grazie simo :P

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.