Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [JAVA] problema JComboBox

    Salve ragazzi ho un problema di questo tipo:

    Ho una JComboBox che carico dinamicamente estraendo dei valori dal db.
    In base al valore selezionato nella JComboBox carico in alvune label dei valori corrispondenti al valore selezionato

    Esempio
    Nel Db ho tabella utenti
    ID NOME COGNOME
    1 Pippo CCC
    2 Marco BBB
    3 Luca AAA

    Quindi nella JComboBox ho:
    CCC
    BBB
    AAA

    quando seleziono ad esempio BBB
    carico in una label il nome, in questo caso Marco

    L'esempio è una cosa semplice di quello che effettivamente devo fare ma il problema è lo stesso

    Quando carico la JComboBox io inserisco la stringa
    Quando prendo il valore selezionato dalla JComboBox io ho la stringa e non l'id dell'elemento selezionato per fare la ricerca nel db per chiave primaria

    la domanda è la seguente
    posso inserire nella JComboBox degli oggetti (ad esempio l'oggetto utente con i tre campi id, nome, cognome) e far stampare solo una stringa?
    In questo modo quando estraggo l'elemento selezionato ho tutti i valori che mi servono serza dover effettuare nuovamente una query sql per estrapolare le info che mi servono!

    Grazie
    Luketto

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Bhè, il costruttore di JComboBox prende anche un array di Object... non vorrei dire una stupidagine, ma credo che ti basti implementare il metodo toString per gli oggetti con cui popoli la JComboBox per avere quella descrizione come etichetta.
    Avevo capito bene la domanda?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3

    ?

    Mi spieghi meglio scusami?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ti posto un esempio alquanto banale, composto di un paio di classi...

    codice:
    import javax.swing.*;
    
    class persona {
    
      private String nome, cognome;
      private int eta;
    
      public String getNome() {
        return nome;
      }
    
      public String getCognome() {
        return cognome;
      }
    
      public int getEta() {
        return eta;
      }
    
      public String toString() {
        return getNome()+" "+getCognome();
      }
    
      public persona(String nome, String cognome, int eta) {
        this.nome = nome;
        this.cognome = cognome;
        this.eta = eta;
      }
    }
    
    
    public class demoJComboBox extends JFrame {
      public demoJComboBox() {
        super("Combo personalizzata");
        persona[] p = new persona[3];
        String[] nome = {"Andrea", "Marco", "Gina"};
        String[] cognome = {"Verdi", "Bianco", "Rossi"};
        int[] eta = {20, 30, 20};
    
        for (int i=0; i < p.length; i++) {
          p[i] = new persona(nome[i], cognome[i], eta[i]);
        }
    
        JComboBox myCombo = new JComboBox(p);
        this.getContentPane().add(myCombo);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(400, 300);
        this.setVisible(true);
      }
    
      public static void main (String[] args) {
        demoJComboBox d = new demoJComboBox();
    
      }
    }
    Spero di aver centrato la questione.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5

    mhm

    a me è un po diverso perchè la combo si incrementa e decrementa dinamicamente! non conosco dimensione (nel tuo caso 3) a priori!!! consigli?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    bhè, non è quello il problema: devi implementare una classe che rispecchi il risultato della query: se stai tirando fuori persone, crei una classe persona tipo quella mia (modificata secondo la tue esigenze). Le JComboBox possono essere popolate anche via
    codice:
    addItem(Object o)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7

    ok

    ho eseguito il tuo esempio, ma dove dici al programma di stampare nome e cognome e non eta? cioè nella combo dove imposto i campi che deono comparire?

    Grazie cmq

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    La JComboBox va automaticamente a vedere se c'è una rappresentazione Stringa del oggetto persona... che è fornito esplicitamente dal toString della classe persona. Per quello parlavo di toString nella prima risposta.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9

    ?

    se volessi stampare solo il nome? e non il cognome?

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    in persona

    codice:
    public String toString() {
      return getNome();
    }
    in altre parole ti basta modificare il toString e fargli tornare la stringa che vuoi.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.