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();
4 Réponses :
Vous pouvez créer votre defaultcomboboxmodel code>. En cela, créez le vecteur de vos données dans votre cas
vecteur
getSelectedItem () code> et utilisez le
getSelectedex () code> pour récupérer la valeur du vecteur. P>
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; } }
Je pense qu'il est préférable d'utiliser un rendu plutôt que de modifier un tostring () code> en fonction de l'interface graphique.
première méthode: implémentation deuxième méthode: si 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.
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;
}
}
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());