Visualizzazione dei risultati da 1 a 6 su 6

Discussione: combobox

  1. #1

    combobox

    Scusate lo so che ho già aperto una discussione su un altro argomento è che mi sono un pò impallata su quest' altra cosa :P
    All'interno di una finestra ho messo una combobox con due possibili opzioni,e ho registrato un itemlistener sempre nella stessa classe che deve solo stampare l'oggetto selezionato,in questo modo
    codice:
    public void itemStateChanged(ItemEvent e) {
     String selezionato=(String)marche.getSelectedItem(); 
    System.out.println(selezionato);
    }
    marche è il nome della combobox. Il risultato è che mi stampa due volte il risultato,come se scegliessi due volte la stessa opzione,ma io ci clicco una volta sola. Qualcuno sa dirmi perchè :P? grazie

  2. #2
    Ciao,
    prova in questo modo:


    ActionListener selectionListener = new SelectionListener();
    comboBox.addActionListener(selectionListener);

    class SelectionListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
    JComboBox cb = (JComboBox)e.getSource();
    String selezionato= (String)cb.getSelectedItem();
    System.out.println(selezionato);

    }
    }

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

    Re: combobox

    Originariamente inviato da lally_fragola
    Il risultato è che mi stampa due volte il risultato,come se scegliessi due volte la stessa opzione,ma io ci clicco una volta sola. Qualcuno sa dirmi perchè :P? grazie
    Perché prima viene inviato un evento per l'elemento deselezionato e poi un altro per l'elemento selezionato.
    Quindi devi usare getStateChange() per filtrare solo i SELECTED.

    Comunque per un JComboBox meglio se usi ActionListener se vuoi solo avere notifica che "un elemento è stato selezionato".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    è che non mi basta avere la notifica che un oggetto è stato selezionato,devo sapere quale è stato selezionato...ma getStateChange() mi ritorna un intero,giusto? e devo usarlo come una specie di "indice" per ottenere il corrispettivo nella combobox? e come ? Grazie

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da lally_fragola
    getStateChange() mi ritorna un intero,giusto?
    Sì ma è SELECTED o DESELECTED. Ti dice solo lo stato.

    Originariamente inviato da lally_fragola
    e devo usarlo come una specie di "indice" per ottenere il corrispettivo nella combobox?
    NO.

    Originariamente inviato da lally_fragola
    e come ?
    a) Usa ActionListener e puoi sapere l'indice con combo.getSelectedIndex() o l'oggetto con combo.getSelectedItem()

    oppure

    b) Usa ItemListener e se evento.getStateChange() = SELECTED allora l'oggetto lo sai da evento.getItem() e l'indice lo puoi comunque sempre ottenere da combo.getSelectedIndex()
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Ho usato l'opzione a), cioè ho messo tutto dentro l'actionlistener e funziona !! grazie mille

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.