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

    Assegnare stesse proprietà e actionPerformed ad un array di oggetti

    Innanzitutto scusate per il titolo lungo
    Allora, in particolare io ho un array di combobox .
    Queste combobox sono tutte uguali fra di loro.Io vorrei che condividessero anche gli stessi item e lo stesso ActionPerformed. Come se fossero dei cloni.
    Purtroppo non ho trovato nulla e non mi viene in mente nulla, qualcuno sa aiutarmi?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Se hai un array di JComboBox...

    codice:
    JComboBox array = new JComboBox[ ... ];
    allora, scorri l'array e assegna gli stessi item / listeners

    codice:
    tuoModel = new TuoComboBoxModel( ... );
    tuoListener = new TuoActionListener( ... );
    
    for(JComboBox jcb : array) {
       jcb.setModel ( tuoModel );
       jcb.addActionListener( tuoListener );
       ...
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    14
    Ciao grazie per la risposta velocissima.
    Non mi è chiara solo una cosa
    codice:
    for(JComboBox jcb : array)
    non mi è chiara bene questa cosa.
    1)jcb come dal tuo esempio non è il nome dell'array.
    che cos'è?
    2) ': array' sta per "fino alla fine di array(che è il nome dell'array appunto)"?cioè va a prendere tutti gli oggetti di quell'array?


    EDIT: facendo una prova mi sono imbattuto in un eccezione:
    "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException"

    codice:
    for(JComboBox jcb : combo){
           jcb.addItem("- SELEZIONA -");
    }
    combo è il nome del mio array di combobox.
    Cosa sbaglio?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Raid90
    Ciao grazie per la risposta velocissima.
    Non mi è chiara solo una cosa
    codice:
    for(JComboBox jcb : array)
    non mi è chiara bene questa cosa.
    1)jcb come dal tuo esempio non è il nome dell'array.
    che cos'è?
    Il for-each introdotto già da Java 5. Per scorrere un array posso usare un for con indice (normale sintassi) o un for-each dove non mi serve avere informazioni sulla posizione. Quel for significa, "per ciascun JComboBox, che identificherò con la variabile 'jcb', presente nell'array 'array', esegui le operazioni..."

    2) ': array' sta per "fino alla fine di array(che è il nome dell'array appunto)"?cioè va a prendere tutti gli oggetti di quell'array?
    Sì. Il for-each può essere tranquillamente usato con tutti gli array e le collezioni.

    EDIT: facendo una prova mi sono imbattuto in un eccezione:
    "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException"

    codice:
    for(JComboBox jcb : combo){
           jcb.addItem("- SELEZIONA -");
    }
    combo è il nome del mio array di combobox.
    Cosa sbaglio?
    Io davo per scontato che l'array l'avessi non solo dichiarato e inizializzato, ma che ne avessi creato anche tutti gli elementi. Evidentemente non l'hai fatto, quindi dovrai tornare al for "classico":

    codice:
    for(int i=0; i<combo.length; i++){
       combo[i] = new JComboBox( ... );
       combo[i].addItem("- SELEZIONA -");
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.