Comment sélectionner combobox par id ou de la valeur à l'aide avec BeanItemContainer?
Je suis en utilisant BeanItemContainer pour mon comboboxes pour satisfaire les paires clé-valeur.
@SuppressWarnings("serial")
public class ComboBoxItem implements Serializable {
private String id;
private String description;
public ComboBoxItem(final String id, final String description) {
this.id = id;
this.description = description;
}
public final void setId(final String id) {
this.id = id;
}
public final void setDescription(final String description) {
this.description = description;
}
public final String getId() {
return id;
}
public final String getDescription() {
return description;
}
}
J'ai créé un exemple de zone de liste déroulante ci-dessous
List<ComboBoxItem> lstAuctionDateList = new ArrayList<ComboBoxItem>();
lstAuctionDateList.add(new ComboBoxItem("all", "All"));
BeanItemContainer<ComboBoxItem> auctionDateItems = new BeanItemContainer<ComboBoxItem>(ComboBoxItem.class,
lstAuctionDateList);
final ComboBox cbAuctionDate = new ComboBox("Auction Date", auctionDateItems);
cbAuctionDate.addStyleName("small");
cbAuctionDate.setNullSelectionAllowed(false);
cbAuctionDate.setTextInputAllowed(false);
cbAuctionDate.setItemCaptionPropertyId("description");
cbAuctionDate.addValueChangeListener(new ValueChangeListener() {
public void valueChange(final ValueChangeEvent event) {
if (cbAuctionDate.getValue() != null) {
System.out.println(((ComboBoxItem) cbAuctionDate.getValue()).getId());
System.out.println(((ComboBoxItem) cbAuctionDate.getValue()).getDescription());
}
}
});
C'est bien, mais je ne peux pas sélectionner l'une des combobox éléments ci-dessous en utilisant les codes
cbAuctionDate.select("all");
cbAuctionDate.select("All");
cbAuctionDate.setValue("all");
cbAuctionDate.setValue("All");
Ce que je me trompe ? Comment puis-je choisir mon comboxes par programmation ?
OriginalL'auteur Cataclysm | 2014-09-10
Vous devez vous connecter pour publier un commentaire.
lors de l'utilisation d'un (haricot) récipient et y ajouter des éléments, l'identité de l'élément lui-même est utilisé comme itemId dans le conteneur. E. g.
cbActionDate.select(lstAuctionDateList[0])
devrait fonctionner.Soit vous avez yo vos objets immuables ou utiliser les moyens de dire le récipient, ce qu'il a à utiliser une pièce d'identité (E. g.
setBeanIdProperty("id")
ousetBeanIdResolver
).Faire l'objet immuable devrait être facile en ce moment (faire la classe et le privé attributs final, déposer les organismes de normalisation et de laisser votre IDE générer
equals
ethashCode
pour vous)cbAuctionDate.select(lstAuctionDateList.get(0));
... c'est vraiment le travail. Merci monsieur !OriginalL'auteur cfrick
Vous n'avez pas besoin de la cbAuctionDate.addItem("Tous"), vous avez déjà un élément dans votre collection
Je voudrais essayer de cette façon:
Maintenant, ma zone de liste déroulante est vide . Suis-je besoin de mettre ItemCaptionPropertyId ? Maintenant, je suis toujours à l'aide de
cbAuctionDate.setItemCaptionPropertyId("description");
. Je n'ai pas encore de.Lorsque vous ne spécifiez rien, alors la méthode toString() est utilisée pour l'affichage de la propriété
OriginalL'auteur André Schild
Maintenant, j'ai créé personnalisé composant ComboBox pour mon problème
et ci-dessous, c'est de tester les codes
OriginalL'auteur Cataclysm