Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    8

    Come prendo l'elemento selezionato da una combobox ed usarli altrove?

    Ciao a tutti, devo fare un piccolo programmino in cui selezionando un intervallo di valori posso calcolare la media.
    Per fare ciò sto usando le combobox:
    ho una combobox chiamata "DA" e un'altra chiamata "A" . Quello che vorrei fare io e dopo aver selezionato l'elemento nella "DA" , far visualizzare gli elementi di "A" a partire da quello successivo ad "DA". Cioè se io ho la combobox "DA" con i valori "5","6","19","20" e seleziono 5, vorrei che nella combobox "A" mi apparissero i numero dal 19 in poi quindi "19" e "20".

    Purtroppo ho difficoltà a prendere il valore selezionato e il suo indice.

    Questo è quello che ho scritto per fare ciò ma la stringa "DA" e l'intero "indice" non li possono usare al di fuori dell'ActionListener. Chi mi aiuta?

    Grazie

    codice:
    comboBoxDA.addActionListener(new ActionListener(){			
    					public void actionPerformed(ActionEvent e) {
    					String DA=comboBoxDA.getSelectedItem().toString();
    					int indice=comboBoxDA.getSelectedIndex();
    					}			
    					
    				});

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da raffux3 Visualizza il messaggio
    Cioè se io ho la combobox "DA" con i valori "5","6","19","20" e seleziono 5, vorrei che nella combobox "A" mi apparissero i numero dal 19 in poi quindi "19" e "20".
    Ma anche il 6, no?

    Quote Originariamente inviata da raffux3 Visualizza il messaggio
    Purtroppo ho difficoltà a prendere il valore selezionato e il suo indice.
    Innanzitutto nel model del combo ci sono oggetti String ... o Integer? Se sono Integer, sarebbe molto meglio. Anche perché come valori Integer potresti fare una cosa banalissima: iteri sugli elementi e per ciascuno, se è > rispetto all'elemento selezionato lo aggiungi nell'altra combo. Chiaramente la combo destinazione va ripulita prima.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    8
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Ma anche il 6, no?


    Innanzitutto nel model del combo ci sono oggetti String ... o Integer? Se sono Integer, sarebbe molto meglio. Anche perché come valori Integer potresti fare una cosa banalissima: iteri sugli elementi e per ciascuno, se è > rispetto all'elemento selezionato lo aggiungi nell'altra combo. Chiaramente la combo destinazione va ripulita prima.

    Purtroppo sono stringhe perché devo gestire quei numeri come stringhe. Io avevo pensato ad una soluzione tipo che dopo aver assegnato la stringa e un intero, chiamo una funzione che aggiorna due variabili: una stringa ed un intero. Con questo intero che sarebbe l'indice posso far partire l'altra combobox..che dici?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da raffux3 Visualizza il messaggio
    Purtroppo sono stringhe perché devo gestire quei numeri come stringhe. Io avevo pensato ad una soluzione tipo che dopo aver assegnato la stringa e un intero, chiamo una funzione che aggiorna due variabili: una stringa ed un intero. Con questo intero che sarebbe l'indice posso far partire l'altra combobox..che dici?
    Se puoi solo con stringhe ... ok. Comunque se nella combo "a" ci vanno i valori presenti nella combo "da" che sono agli indici successivi a quello selezionato, è banale:

    int indice = comboBoxDA.getSelectedIndex();

    poi:
    - azzeri la combo "a"
    - ciclo for: per tutti gli indici da indice+1 (incluso) fino al massimo possibile, prendi da combo "da" e aggiungi nella combo "a"
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    8
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Se puoi solo con stringhe ... ok. Comunque se nella combo "a" ci vanno i valori presenti nella combo "da" che sono agli indici successivi a quello selezionato, è banale:

    int indice = comboBoxDA.getSelectedIndex();

    poi:
    - azzeri la combo "a"
    - ciclo for: per tutti gli indici da indice+1 (incluso) fino al massimo possibile, prendi da combo "da" e aggiungi nella combo "a"

    intendi così?

    codice:
    comboBoxDA.addActionListener(new ActionListener(){
    			
    					public void actionPerformed(ActionEvent e) {
    					String DA=comboBoxDA.getSelectedItem().toString();
    					int indice=comboBoxDA.getSelectedIndex();
    					
    					for(int i=indice+1;i<interval.length;i++)
    					{
    						interval[i]=EstraiDati.EstraiRiga(i);
    					}
    					
    					add(comboBoxA);
    }			
    					
    				});

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da raffux3 Visualizza il messaggio
    intendi così?
    No. Intanto getSelectedItem() non credo ti serva in questo contesto.
    E non si vede cosa è interval (deduco un array ma neanche questo ti servirebbe).

    Una questione: le combobox le hai usate parametrizzate? Da Java 7, JComboBox è stato reso "generico", quindi ad esempio JComboBox<String>

    codice:
    int indice = comboBoxDA.getSelectedIndex();
    int count = comboBoxDA.getItemCount();
    
    // Svuota comboA
    
    for (int i = indice+1; i < count; i++) {
        String elem = comboBoxDA.getItemAt(i);
        // Aggiungi elem in comboA
    }

    Devi solo completare tu ... ma è proprio tutto lì.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    8
    Quote Originariamente inviata da andbin Visualizza il messaggio
    No. Intanto getSelectedItem() non credo ti serva in questo contesto.
    E non si vede cosa è interval (deduco un array ma neanche questo ti servirebbe).

    Una questione: le combobox le hai usate parametrizzate? Da Java 7, JComboBox è stato reso "generico", quindi ad esempio JComboBox<String>

    codice:
    int indice = comboBoxDA.getSelectedIndex();
    int count = comboBoxDA.getItemCount();
    
    // Svuota comboA
    
    for (int i = indice+1; i < count; i++) {
        String elem = comboBoxDA.getItemAt(i);
        // Aggiungi elem in comboA
    }

    Devi solo completare tu ... ma è proprio tutto lì.

    si è un array di stringhe fatto appunto dalle stringhe che devono finire dentro le combobox...

    comunque ho fatto ciò ma il risultato non cambia:


    codice:
    comboBoxDA.addActionListener(new ActionListener(){
                
                        public void actionPerformed(ActionEvent e) {
                            int indice = comboBoxDA.getSelectedIndex();
                            int count = comboBoxDA.getItemCount();
    
    
                            // Svuota comboA
    
    
                            for (int i = indice+1; i < count; i++) {
                                String elem = (String) comboBoxDA.getItemAt(i);
                                // Aggiungi elem in comboA
                               comboBoxA.addItem(elem);
                                
                            }
                        }

    Rettifico: sbagliavo io nel dare già i parametri alla comboboxA..ora funzionicchia, cioè mi prende automaticamente il valore successivo, solo che se dovessi ricambiare il valore in comboDA, nella comboA mi appaiono tutti.

    Edit..rimuovendo tutti gli elementi nella comboA funziona, ecco la soluzione

    codice:
    comboBoxDA.addActionListener(new ActionListener(){
    			
    					@SuppressWarnings("deprecation")
    					public void actionPerformed(ActionEvent e) {
    						int indice = comboBoxDA.getSelectedIndex();
    						int count = comboBoxDA.getItemCount();
    						
    						// Svuota comboA
    						
    							comboBoxA.enable();
    							for (int i = indice+1; i < count; i++) {
    								comboBoxA.removeAllItems();
    							}
    							
    						
    						for (int i = indice+1; i < count; i++) {
    						    String elem = (String) comboBoxDA.getItemAt(i);
    						    // Aggiungi elem in comboA
    						   comboBoxA.addItem(elem);
    						    
    						}
    					}			
    					
    				});
    Grazie mille
    Ultima modifica di raffux3; 12-04-2018 a 15:31

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    E secondo te il commento " // Svuota comboA " che ha messo andbin (e che tu hai scrupolosamente ricopiato) a cosa serviva se non a farti capire che dovevi svuotare la combo A? Era ovvio che dovevi farlo tu: lui ti ha solo dato il suggerimento...

    Tra l'altro "removeAllItems()" significa appunto "rimuovi tutti gli item"... a che serve farglielo fare dentro ad un ciclo for? Basta una sola chiamata, non N.


    Ciao.
    Ultima modifica di LeleFT; 12-04-2018 a 15:51
    "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

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2016
    Messaggi
    8
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    E secondo te il commento " // Svuota comboA " che ha messo andbin (e che tu hai scrupolosamente ricopiato) a cosa serviva se non a farti capire che dovevi svuotare la combo A? Era ovvio che dovevi farlo tu: lui ti ha solo dato il suggerimento...

    Tra l'altro "removeAllItems()" significa appunto "rimuovi tutti gli item"... a che serve farglielo fare dentro ad un ciclo for? Basta una sola chiamata, non N.


    Ciao.
    hai ragione

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.