Wie man Subfxml GUI Teile zur Laufzeit mit Button Click ändert
Ich versuche zu bauen, ein Skelett für eine große, komplexe gui, also die Idee ist, dass alles, was mit mvc-Stil in javafx 2.1, so dass jede Komponente hat eine fxml-Datei und, wenn nötig css,controller und Modell. Ich bin tryin, um herauszufinden, wie zu ändern, sub-Szenen, (sub-fxml zur Laufzeit). Wer weiß, wie es zu tun? Ich bin irgendwie stecken geblieben. Kann eine Biene zum hinzufügen MainViewController? Szenario: user klickt auf button in der Taskleiste und die enthaltenen inhalt1.fxml ersetzt werden, mit inhalten2.fxml
hier der basic code
MainApp.java
Loads the MainView.fxml
MainView.fxml
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<BorderPane xmlns:fx="http://javafx.com/fxml">
<center>
<fx:include source="Content1.fxml"/>
</center>
<bottom>
<fx:include source="TaskBar.fxml"/>
</bottom>
</BorderPane>
Inhalt1.fxml
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<StackPane xmlns:fx="http://javafx.com/fxml" fx:id="content1">
<Label text="Hallo Java FX 2.1.1 Content1.fxml"/>
</StackPane>
Inhalten2.fxml
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<StackPane xmlns:fx="http://javafx.com/fxml" fx:id="content2">
<Label text="Hallo Java FX 2.1.1 Content2.fxml"/>
</StackPane>
Taskleiste.fxml
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<HBox xmlns:fx="http://javafx.com/fxml" spacing="10" alignment="center"
fx:id="taskBar" fx:controller="TaskBarController">
<children>
<Button fx:id="taskBarButton1" onAction="#handleTaskBarButton1Action"/>
<Button fx:id="taskBarButton2" onAction="#handleTaskBarButton2Action"/>
</children>
</HBox>
TaskBarController.java
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
public class TaskBarController implements Initializable {
//Binding with the FXML
@FXML
private Button taskBarButton1;
@FXML
private Button taskBarButton2;
@FXML
private void handleTaskBarButton1Action(ActionEvent event) {
System.out.println("click! taskBarButton1");
}
@FXML
private void handleTaskBarButton2Action(ActionEvent event) {
System.out.println("click! taskBarButton2");
}
@Override
public void initialize(URL location, ResourceBundle resources) {
//TODO Auto-generated method stub
}
}
InformationsquelleAutor der Frage Snow | 2012-07-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht nur das fxml erstellen Sie eine business-Logik-Schicht:
und aktualisieren Sie Sie in der Schaltfläche click-Handler:
InformationsquelleAutor der Antwort Sergey Grinev
funktioniert es,thx für die Hilfe, aber ich war gezwungen, Sie zu entfernen Taskleiste.fxml und TaskBarController.java , schrieb ein MainViewController mit @FXML Griffe und @FXML für die Tasten und den Bereich mit der fx:id="content" , und legte meinen Zoll-Schaltflächen in der MainView.fxml
InformationsquelleAutor der Antwort Snow