# JAVAFX und CSS Datei in Eclipse



## Breas (31. Jan 2014)

Hallo zusammen,

ich habe ein kleines Problem mit JAVAFX. Ich versuche ein Hintergrundbild in eine Scene einzufügen. 
Ich habe das mit Scene.getStyleSheets versucht. Ich erhalte immer die Fehlermeldung das er das CSS File nicht finden kann.

Jetzt meine frage hierzu : 
Wo in Eclipse muss das File liegen damit ich es einfach mit Filenamen angeben kann ? (z.B. "Style.css" )

Eigentlich würde ich das ja gerne ohne CSS machen, aber das funktioniert irgendwie gar nicht.

Vielen Dank euch schonmal für die Mühe.


----------



## dzim (31. Jan 2014)

Das kommt jetzt darauf an, was du eigentlich möchtest:

- Ein Hintergrundbild ist auch möglich, wenn du als oberstes Element der Scene ein StackPane legst, darauf als erstes einen ImageView (Hintergrund-Bild) und als zweites deinen eigentlichen Content (z.B. ein BorderPane). Wichtig wäre in dem Fall, dass du den ImageView immer hochskalierst (ich glaube da gibt es so ein Konstrukt á la "Strategy.STRETCH" oder so) und bei beiden (ImageView + BoderPane) musst du maxWidth/-Height auf Double.MAX_VALUE setzen (und H-/VGrow auf Priority.ALWAYS).

- ein CSS anzuhängen ist eigentlich einfach, aber ich frage mal so rum: machst du eine "einfache" JavaFX-Anwendung oder eher eine e4-Anwendung (OSGi-basiert und all die tollen e4-Features nutzend)? 

- wenn es eine einfache Anwendung wird, dann wäre es das einfachste, die Datei in den Classpath zu legen (z.B. ein "res"-Package frei nach Android - extrem frei nach Android) und an deine Scene via [c]scene.getStylesheets().add(getClass().getResource("res/application.css").toExternalForm());[/c] zu hängen (den Pfad musst du natürlich auf deine Bedürfnisse anpassen, ich habe eine Main-Klasse, das liegt in einem package und hat ein "Unterpackage" mit dem Bezeichner "res" und dort ist die "application.css" enthalten).

- bei e4 kannst du in deinem Bundle ein eigenes Directory im Root des Projekts anlegen - bei mir gibt es dort einen "css"-Ordner, der meine CSS-Dateien enthält. Im Code müsstest du dann die URL ungefähr wie folgt aufbauen: [c]scene.getStylesheets().add(String.format("platform:/plugin/%s/%s", Activator.PLUGIN_ID, "css/default.css"));[/c], du erhälst also eine URL á la [c]platform:/plugin/my.plugin.id/css/default.css[/c]

Hilft dir das?


----------



## dzim (31. Jan 2014)

Ach so und wie es im CSS aussehen muss, hab ich natürlich vergessen... Du kannst im CSS eine .root-Klasse erweitern und dort alles vorbereiten:


```
.root {
	-fx-fill: background-fill;

	-fx-background-color: background0; /*setzt den unten definierten Gradienten als Hintergrundfarbe */
	-fx-background-radius: 5px;
	/*-fx-background-insets: 20px;*/
	-fx-background-image: url("arrow3.png"); /* hängt ein Bild unten rein - muss hier im selben Pfad erreichbar sein */
	-fx-background-repeat: repeat-x; /* in welche Richtung wird es wiederholt */
	-fx-background-position: bottom; /* wo ist es verankert */

	-fx-border-color: transparent transparent transparent transparent;
	-fx-border-width: 0.0 0.0 0.0 0.0;
	/*-fx-border-width: 20px;*/

	/* can be used for the primary scene's fill pain */
	background-fill: linear-gradient(to bottom, #444444 0%, black 100%);

	/* the default background */
	background0: radial-gradient(focus-angle 320.0deg, focus-distance 0.0%, center 50.0%
		100.0%, radius 125.0%, #69b7e6, #005596, #054377);
}
```

Ich finde das Styling via CSS recht "sexy" (entschuldige den Begriff, ich meine damit: es geht einfach recht flott von der Hand) und relativ einfach, wenn man sich eingearbeitet hat, ab und hier JavaFX CSS Reference Guide mal nachschaut (und/oder StackOverflow nutzt) und sich das originale CSS von JavaFX (zu finden in der jfxrt.jar, JavaFX 2 "caspian.css", Google weiß mehr!) zu Rate zieht.


----------



## Breas (1. Feb 2014)

Hallo,

vielen Dank dir - ja das hilft enorm. 
Ich werde das mit der StackPane und BorderPane versuchen. Ich habe versucht eine einfache Java Applikation mit einer GUI auszustatten. 

Da Swing und AWT etwas verältet ist, bin ich auf JavaFX gestossen und das was ich bisher gelesen und damit gemacht gefällt mir ganz.

Vielen Dank nochmals und sorry das ich erst so spät geantwortet habe


----------



## dzim (2. Feb 2014)

Ok, wenn dein Thema durch ist, bitte noch den Thread als erledigt markieren.


----------

