Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Refresh di combobox

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480

    Refresh di combobox

    Ciao a tutti,
    ho una jcombobox con la quale faccio riferimento alle sottodirectory di una directory , da queste sottodirectory prendo i nomi per gli elementi della jcombobox. La combobox funziona bene.
    Però dato che dalla mia GUI vado ad inserire altre sottodirectory , vorrei che gli elementi della jcombobox fossero aggiornati al runtime.
    Ho provato utilizzando un jbutton fatto così:
    codice:
        private void refreshCityActionPerformed(java.awt.event.ActionEvent evt) {                                            
           menuCitta.repaint();
           menuCitta.revalidate();
        }
    ma non mi aggiorna nulla.

    Come potrei fare?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    codice:
           menuCitta.repaint();
           menuCitta.revalidate();
    ma non mi aggiorna nulla.
    Nessuna delle due è importante/rilevante .... in generale, conta solo come/quando si aggiorna il "model" del JComboBox.
    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
    Jul 2014
    Messaggi
    480
    Cioè devo aggiornare il model e non la combobox?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Cioè devo aggiornare il model e non la combobox?
    No ... intendo dire che è il model con i suoi dati che conta .... non repaint() o revalidate() o altri del genere.
    Poi che tu parli direttamente con il model oppure, indirettamente, con il combobox (es. il suo addItem) .... poco/nulla cambia. Tutto comunque arriva poi sempre al model.

    Se si usa il model predefinito (DefaultComboBoxModel), tecnicamente è possibile incasinare qualcosa. Esempio lampante: se lo crei con new DefaultComboBoxModel(tuoVector), lui non si fa un "copia", usa direttamente il riferimento al tuoVector. Se poi tu dall'esterno aggiorni tuoVector, il model non ne "sa" nulla, tu hai cambiato dato/i ma non "vedi" alcun aggiornamento. Ma non è questo infatti il modo d'uso appropriato!

    Se hai implementato un ComboBoxModel custom ... ovviamente sarebbe tutto da vedere.
    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
    Jul 2014
    Messaggi
    480
    Io ho questo:
    codice:
    File dir = new File("dirIniziale\\Europe");
    
                DefaultComboBoxModel modello = new DefaultComboBoxModel();
                for (File f : dir.listFiles()) {
                    modello.addElement(new FileItem(f));
                }
    dove "Europe" ovviamente contiene delle sottodirectory di vado a prendere i nomi per popolare la combobox

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Ho fatto in questo modo:
    codice:
    private void refreshCityActionPerformed(java.awt.event.ActionEvent evt) {                                            
            String aggiornaContinente = null;
            if (europa.isEnabled()) {
                aggiornaContinente = "Europe";
            } else if (africa.isEnabled()) {
                aggiornaContinente = "Africa-Asia";
            }
            File dir = new File("dirIniziale\\" + aggiornaContinente);
            DefaultComboBoxModel modello = new DefaultComboBoxModel();
            for (File f : dir.listFiles()) {
                modello.addElement(new FileItem(f));
            }
            menuCitta.setModel(modello);
        }

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.