6
votes

Java Combobox Valeur différente pour nommer

J'ai une boîte à combo Java et un projet lié à une base de données SQLite. Si j'ai un objet avec un identifiant et un nom associé:

selEmployee.getSelectedItem();


0 commentaires

4 Réponses :


0
votes

Vous pouvez créer votre defaultcomboboxmodel . En cela, créez le vecteur de vos données dans votre cas vecteur Empvec . Vous devez également remplacer la méthode getSelectedItem () et utilisez le getSelectedex () pour récupérer la valeur du vecteur.


0 commentaires

6
votes

Ajoutez l'objet Employee à la JCOMBOBOX et écrasez la méthode de ToString de la classe d'employé pour renvoyer le nom de l'employé.

Employee emp=new Employee("Name Goes here");
comboBox.addItem(emp);
comboBox.getSelectedItem().getID();
...
public Employee()  {
  private String name;
  private int id;
  public Employee(String name){
      this.name=name;
  }
  public int getID(){
      return id;
  }
  public String toString(){
      return name;
  }
}


1 commentaires

Je pense qu'il est préférable d'utiliser un rendu plutôt que de modifier un tostring () en fonction de l'interface graphique.



10
votes

première méthode: implémentation tostring () code> sur la classe d'employé et le renvoie le nom. Faites votre modèle de boîte déroulante contient des instances d'employé. Lorsque vous obtenez l'objet sélectionné à partir du combo, vous obtiendrez une instance d'employé et vous pouvez ainsi obtenir son identifiant.

deuxième méthode: si Tostring () code> retourne quelque chose d'autre que le nom (débogage Les informations, par exemple), faites la même chose que ci-dessus, mais définissez en outre un rendu de cellule personnalisé sur votre combo. Ce rendu de cellule devra voter la valeur à l'employé et définir le texte du label au nom de l'employé. P>

public class EmployeeRenderer extends DefaulListCellRenderer {
    @Override
    public Component getListCellRendererComponent(JList<?> list,
                                                  Object value,
                                                  int index,
                                                  boolean isSelected,
                                                  boolean cellHasFocus) {
        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
        setText(((Employee) value).getName());
        return this;
    }
}


0 commentaires

3
votes

Je pense que le moyen HashMap Strong> utiliserait quelque chose comme celui-ci lorsque vous remplissez votre JCOMBOBOX avec les RESEILLET

int Id = IDHolder.get(comboBox.getSelectedIndex());


0 commentaires