# JavaFX - fxml-Datei laden (neben CSS)



## Vokabulator (26. Sep 2013)

Hallo! Ich würde gerne eine fxml-Datei hier noch laden, bekomme aber immer Fehler.
ich habe gesehen, dass man den FXMLLoader in 
	
	
	
	





```
Parent root
```
 speichert und dann der scene übergibt. Ich übergebe hier ja aber schon mein GridPane.

Ich denke, ich verstehe da ein paar Dinge noch nicht ganz  Ersetzt das FXML die Layoutangaben im Java-Code oder ergänzt es sie? Ich kann ja CSS auch zusammen mit Layoutangaben im Java haben.

Danke für eure Hilfe!


```
public class Main extends Application {

	private ImageView image;
	
	@Override

	public void start(Stage primaryStage) {

		primaryStage.setTitle("JavaFX Welcome");
		primaryStage.show();

		GridPane grid = new GridPane(); 
		grid.setAlignment(Pos.CENTER);
		grid.setHgap(10);
		grid.setVgap(10);
		grid.setPadding(new Insets(25, 25, 25, 25)); 
		
		Text scenetitle = new Text("Welcome");
		scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
		grid.add(scenetitle, 0, 0, 2, 1);
		 
		scenetitle.getStyleClass().add("scene-title");

		Label userName = new Label("User Name:");
		grid.add(userName, 0, 1); 

		TextField userTextField = new TextField();
		grid.add(userTextField, 1, 1); 
		userTextField.setId("textfeld");

		Label pw = new Label("Password:");
		grid.add(pw, 0, 2); 

		PasswordField pwBox = new PasswordField();
		grid.add(pwBox, 1, 2); 

		Button btn = new Button("Sign in");
		btn.setId("igo");
		HBox hbBtn = new HBox(10); 
		hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
		hbBtn.getChildren().add(btn);
		grid.add(hbBtn, 1, 4);
		
		final Text actiontarget = new Text(); 
		grid.add(actiontarget, 1, 6);
		
		btn.setOnAction(new EventHandler<ActionEvent>() {
			@Override
			public void handle(ActionEvent e) {
				actiontarget.setFill(Color.FIREBRICK);
				actiontarget.setText("Sign in button pressed");
			}
		});

		image = new ImageView();
		image.setImage(new Image("images//tree.gif"));
		image.setFitWidth(100);
		image.setPreserveRatio(true);
		image.setSmooth(true);
		image.setCache(true);
		grid.add(image, 2,2);
		
		Scene scene = new Scene(grid, 300, 275);
		scene.getStylesheets().add(application.Main.class.getResource("Login.css")
				.toExternalForm());
		primaryStage.setScene(scene);
		
	}
	public static void main(String[] args) {
		launch(args);
	}

}
```


----------



## freddy79 (26. Sep 2013)

Vokabulator hat gesagt.:


> ...
> Ich denke, ich verstehe da ein paar Dinge noch nicht ganz  Ersetzt das FXML die Layoutangaben im Java-Code oder ergänzt es sie? Ich kann ja CSS auch zusammen mit Layoutangaben im Java haben.
> ...



Im Idealfall definierst du im FXML die komplette View.
Dies ist aber nicht immer komplett möglich.
Bspw. bei dynamisch generierten UI-Komponenten.

Soweit möglich würde ich aber für die View FXML einsetzen.
Hierdurch wird das MVC Muster/Paradigma unterstützt.

Des Weiteren kannst du dann den Scene Builder (WYSIWYG Editor) verwenden,
der auf mich einen guten Eindruck gemacht hat.

Am besten mal das hier durchlesen:
Mastering FXML: About This Tutorial | JavaFX 2 Tutorials and Documentation


----------



## Vokabulator (26. Sep 2013)

okay, super. Danke vielmals!


----------

