# JAVAFX icon in ComboBox einfügen



## Back2Basic (27. Feb 2014)

moin,

wie das Thema schon vermuten lässt, wie bekomme ich ein icon in eine combo-box.

In der doku steht das es unterstützt wird aber über meine styles.css:

// 

.combo-box {


-fx-background-image: url("search.png")

}

bekomme ich einfach kein Hintergrundbild angepasst.

P.s Über Szenebuilder geht es auch nicht... 


Wenn jemand eine Lösung hätte!! Wäre super  

Gruß


----------



## dzim (27. Feb 2014)

Du willst das Icon wo genau haben? Soll jedes Item ein Icon haben, oder nur die Combobox selbst? Ein Hintergrundbild wäre ja wirklich die gesamte Box hinterlegend, ein Icon nur (meist) auf der linken Seite...

Ich glaube du willst letzteres, dann musst du eine custom-CellFactory an deine Combobox hängen (im Code) und dort in der #update-Methode des Callbacks den #setGraphic(Node) nutzen, indem du einen ImageView deines Icons übergibst.


----------



## Back2Basic (27. Feb 2014)

Hi,

vielen Dank schon mal für  die Antwort, eigentlich ist es ein Hintergrundbild, was vielleicht zusammen mit dem eigentlichen Text auf der ComboBox erscheinen soll...


Das Problem ist das ich das wohl alles erstmal über den SceneBuilder machen will um leichter die fxml Dateien zu generierne... finde aber bei Gott nicht die richtige Einstellung bzw. Button zum setzen dieser Eigenschaft. 

Ich bekomme keine CSS Fehlermeldungen nur das Bild erscheint nicht.


----------



## dzim (27. Feb 2014)

Naja, das ist auch kein Wunder. Das allein wird nicht helfen. Allerdings warne ich dich vor - das wird jetzt in ein wenig Trial-and-Error ausarten, weil ich das für Comboboxen noch nicht benötigt habe - nur für buttons und da ist es einfacher.


```
#combo-box-icon {
	-fx-background-radius: null;
	-fx-background-color: null;
	-fx-background-image: url("Achtung_icon_2.png");
	-fx-background-repeat: repeat-x;
	-fx-background-size: 20;
	-fx-background-position: center;
	-fx-background-insets: 0, 0, 0, 0; /*1.0, 1.0, 1.0, 1.0;*/
	-fx-border-radius: 0px;
	-fx-border-color: black;
	-fx-border-width: 2px;
}
```
erweitere an deiner Combobox die *id* - aber nicht die *fx:id*! Dazu gibst du  dort 
	
	
	
	





```
combo-box-icon
```
 als Wert an.
Dadurch wird jetzt *alles* von deiner Combobox entfernt, *ausser* der Button zum aufklappen.

JavaFX CSS Reference Guide

Jetzt musst du im CSS ausprobieren, welche Sub-Klassen du anpassen musst (hier scheint die Doku etwas unfertig zu sein, denn ich sehe keinen Button). Denn der Button sollte ja wenn nötig auch wie die anderen Buttons der Anwendung aussehen und einen guten Rahmen (nicht das schwarze Ding von mir) braucht deine ComboBox ja auch, denn sie ist ja jetzt transparent... auch musst du schauen, ob _repeat-x_ das ist, was du brauchst - ich denke mal eher, nicht (besser _no-repeat_, oder musst du das Bild stretchen......)

FF...... Viel Vergnügen.


----------



## Back2Basic (28. Feb 2014)

hat geklappt und jep ""No -repeat " war nötig... vielen Dank. ich wusste nicht das ich dafür extra eine neue ID brauche.


----------



## dzim (28. Feb 2014)

Also nein. Du brauchst keine extra ID, wenn du es für alle ComboBoxen so möchtest. Dann könntest du die ID weg lassen und einfach nur die CSS-Klasse 
	
	
	
	





```
.combo-box
```
 auf die Selbe Art erweitern. Aber ich finde, das ist eher ein "Spezialfall" und würde es daher über die ID regeln. Das ist nur meine Meinung...


----------

