2 votes

Pourquoi ComboBoxModel<E> renvoie-t-il un objet au lieu de E ?

Utilisation de la fonction ComboBoxModel Pour obtenir l'élément sélectionné, il est nécessaire de procéder à un moulage de type, car l'interface est définie comme suit :

public interface ComboBoxModel<E> extends ListModel<E> {

    void setSelectedItem(Object anItem);

    Object getSelectedItem();

}

Je pense que le type de retour de getSelectedItem pourrait être E . En fait, cela est fait par le ListModel l'interface ComboBoxModel hérite de, pour la sélection par index :

public interface ListModel<E> {

   E getElementAt(int index);

}

Quelle serait la raison de ne pas utiliser le E paramètre de type dans ComboBoxModel ?

0voto

Tobias Roloff Points 112

Parce que le champ de texte d'une ComboBox peut être modifié par l'utilisateur.

JComboBox.setEditable(true);

Si une ComboBox est modifiable, l'utilisateur peut saisir du texte dans le champ de texte de la ComboBox, qui est renvoyé sous forme de chaîne par JComboBox.getSelectedItem(), quel que soit le paramètre de type fourni pour le modèle.

Si vous voulez obtenir un objet de E utiliser :

  E e = JComboBox.getModel().getElementAt(JComboBox.getSelectedIndex());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X