7
votes

Java Combobox Comment ajouter une icône?

im Nouveauté à FXML et je construis une application. Maintenant, je rencontre un problème que je ne peux pas corriger.

J'ai défini un ComboBox dans la FXML et créé l'association Necesarry dans la classe du contrôleur. Mais je veux ajouter des images à cette combinox.

toujours après des heures de recherche sur Google, je ne suis toujours pas capable de résoudre ce problème.

pouvez-vous gars s'il vous plaît aidez-moi avec un " Simple "exemple sur la façon d'atteindre mon objectif?

Merci beaucoup!

Mon code actuel est: (sûr qu'il y a un moyen plus facile de le faire, mais ça marche!) < / p> xxx


1 commentaires

@Bartpasmansmaybe Ce n'est pas ce que vous voulez, mais cela peut être un point de départ. Vous pouvez vérifier ce Link


3 Réponses :


4
votes

Vous devez personnaliser le Cellfactory a> de la combinaison pour maintenir la visualisation des éléments de la boîte. Voir Ce lien pour un court exemple.

Pour faire l'image Visible dans la zone de contrôle (après avoir sélectionné un élément), vous devez définir la cellule du bouton du ComboBox dans l'une de vos cellules. JavaFx les mettra automatiquement à la mettre à jour en conséquence. Fondamentalement, ce que vous avez à faire est lorsque vous configurez la combinaison de ComboBox avec votre cellule personnalisée est la suivante: p>

mycombobox.setButtonCell(myCellFactory.call(null));


3 commentaires

Merci fonctionne comme un charme! Mais lorsque je sélectionne l'image à partir du texte COMBOLE, le texte COMBox affiche la chaîne d'URL de l'image. Comment puis-je faire montrer à la combinaison l'image aussi?


@Bartpasmans: Voir mon édition dans la réponse. Aussi, bienvenue à Stackoverflow. Si votre question est répondue, veuillez marquer la réponse et une uppote serait aussi agréable.)


Comment mettre en œuvre la celluleFactory dans mon code: Comboboxlanguage.setcellfactory (nouveau rappel , listcell > () {} merci pour votre aide!



5
votes

Prenant le échantillon Erhun lié dans son commentaire comme point de départ, définissez le ComboBox en FXML comme ci-dessous. de sorte que les éléments de la boîte déroulante comprennent des étiquettes avec des graphiques (celles-ci sont vos "icônes").

ListCell<Label> buttonCell = new ListCell<Label>() {
  @Override protected void updateItem(Label item, boolean isEmpty) {
    super.updateItem(item, isEmpty);
    setText(item == null ? "" : item.getText());        
  }
};
fruitCombo.setButtonCell(buttonCell);


0 commentaires

1
votes
ObservableList options = FXCollections.observableArrayList();
//
Image img = new Image("/images/auto32.png");
ImageView imgView = new ImageView();
imgView.setImage(img);
//
Label lbl = new Label("test");
lbl.setGraphic(imgView);
// 
options.add(lbl);
options.add(lbl);
options.add(lbl);
//
myCombo.setItems(options);

0 commentaires