2016-11-28 2 views
0

Je suis en train de passer outre ma méthode JComboBox getSelectedItem en utilisant cette méthode statique:primordial JComboBox getSelectedItem ne fonctionne pas

public static void setupID_TITLE_ComboBox(JComboBox jComboBox, String tableName) throws SQLException { 
    // query to select ID and TITLE from profiles table 
    String query = "SELECT ID,TITRE FROM " + tableName + ";"; 
    ResultSet myJComboResultSet = SQLTools.ExecuteQuery(query); 

    ArrayList visualItems = new ArrayList(); // the Items of my combobox [item1,item2] 
    ArrayList idItems = new ArrayList(); // the corresponding IDs for each item [id1,id2] 

    while (myJComboResultSet.next()) { 
     visualItems.add(myJComboResultSet.getObject("TITRE")); // filling items set 
     idItems.add(myJComboResultSet.getObject("ID")); // filling IDs set 
    } 

    System.out.println("IDItems=" + idItems); // checking that my Items are filled 
    System.out.println("visualItems=" + visualItems); // checking that my IDs are filled 

// creating a combobox of previous items 
    jComboBox = new JComboBox(visualItems.toArray()) { 
     ArrayList values = idItems; 

// overriding the getSelectedItem to return the corresponding selected item's ID 
     @Override 
     public Object getSelectedItem() { 
      Object get = values.get(super.getSelectedIndex()); 
      System.out.println("get = " + get); 
      return get; 
     } 

    }; 

} 

Je suis d'appeler cette méthode à partir d'un autre cadre:

JComboBoxTools.setupID_TITLE_ComboBox(J_Users_Profile,"profiles"); 

Mais lorsqu'il est exécuté, il ne fonctionne pas. la sortie:

visualItems = [Admin, professeur, étudiant]

IDItems = [0,3,5]

la valeur de retour de l'article sélectionné est: Maître

Je ne sais pas quoi faire Je veux qu'il revienne 3 qui est l'ID de l'enseignant.

l'ensemble du projet est sous: this link

merci.

+0

Alors, qu'essayez-vous d'accomplir ici? Vous voulez juste imprimer la valeur sélectionnée? – Thibstars

+0

mes éléments de liste déroulante sont [SuperAdmin, Étudiant, Enseignant] lorsqu'un élément est sélectionné les valeurs de retour est par exemple (Étudiant) dans ma base de données Profil étudiant avoir un ID, je veux traiter en backend en utilisant l'ID pas la valeur du titre profil qui est (étudiant) pourquoi j'ai 2 arraylist un pour visuel (frontend) un pour le traitement (je vais générer une requête d'insertion dans le backend) –

+0

ma requête est bien formulée et générée mais je veux l'id pas le titre de profil –

Répondre

0

je reçois mes valeurs désirées à l'aide d'un mapComboBoxModel

public static void setupID_TITLE_ComboBox(JComboBox jComboBox, String tableName) throws SQLException { 

    String query = "SELECT ID,TITRE FROM " + tableName + ";"; 
    ResultSet myJComboResultSet = SQLTools.ExecuteQuery(query); 

    HashMap myMap = new HashMap(); 
    while (myJComboResultSet.next()) { 
     myMap.put(myJComboResultSet.getObject("TITRE"), myJComboResultSet.getObject("ID")); 
    } 

    jComboBox.setModel(new MapComboBoxModel(myMap) { 

     @Override 
     public Object getValue(Object selectedItem) { 
      return map_data.get(selectedItem); //To change body of generated methods, choose Tools | Templates. 
     } 

    }); 


} 

J'overrided getValue retourner l'ID.

if (myComponent instanceof JComboBox) { 
      JComboBox jComboBox = (JComboBox) myComponent; 
      MapComboBoxModel model = (MapComboBoxModel) jComboBox.getModel(); 
      values+=""+model.getValue(model.getSelectedItem())+",";     
     }