Hallo Zusammen,
für mein Programm möchte ich ein FXML-File (FourButtons.fxml) in mein Haupt-FXML-File (Main.fxml) mehrfach einfügen. In FourButtons.fxml sind 4 Buttons in einem Grid angeordnet. Durch den Aufruf <fx:include source ="FourButtons.fxml"/> kann ich diese auch in Main.fxml einfügen. Das klappt alles wunderbar, auch wenn ich diese mehrfach einfüge.
Mein Problem ist nun, wie kann ich unterscheiden, ob ich den Button1 aus dem einem FourButtons.fxml gedrückt habe oder aus dem anderen? Den die ID-Bezeichung bleibt ja immer gleich. Ich hab dem Eingefügten ebenfalls eine ID gegeben, weiß aber nicht wie ich dies in meinem Controller einbaue.
Ich hoffe, das hier zusammen getackerte Beispiel erklärt es ein wenig.
Könnt ihr mir weiterhelfen?
Jetzt schon mal: Vielen Dank
[CODE lang="java" title="FourButtons.fxml"]<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?>
<GridPane
xmlns:fx="http://javafx.com/fxml/1"
xmlns="http://javafx.com/javafx/2.2"
fx:controller="Controller"
hgap="5"
vgap="5">
<children>
<Button
fx:id="button1"
prefHeight="50"
prefWidth="50"
onAction="#actionButton"
GridPane.rowIndex="0" GridPane.columnIndex="0">
</Button>
<Button
fx:id="button2"
prefHeight="50"
prefWidth="50"
onAction="#actionButton"
GridPane.rowIndex="1" GridPane.columnIndex="0">
</Button>
<Button
fx:id="button3"
prefHeight="50"
prefWidth="50"
onAction="#actionButton"
GridPane.rowIndex="0" GridPane.columnIndex="1">
</Button>
<Button
fx:id="button4"
prefHeight="50"
prefWidth="50"
onAction="#actionButton"
GridPane.rowIndex="1" GridPane.columnIndex="1">
</Button>
</children>
</GridPane>[/CODE]
[CODE lang="java" title="Main.fxml"]<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<GridPane
xmlns:fx="http://javafx.com/fxml/1"
xmlns="http://javafx.com/javafx/2.2"
fx:controller="Controller"
hgap="5"
vgap="5">
<children>
<HBox
spacing="10"
alignment="bottom_right"
GridPane.rowIndex="0" GridPane.columnIndex="0">
<children>
<fx:include
fx:id="fourButtons1"
source="FourButtons.fxml"/>
</children>
</HBox>
<HBox
spacing="10"
alignment="bottom_right"
GridPane.rowIndex="1" GridPane.columnIndex="0">
<children>
<fx:include
fx:id="fourButtons2"
source="FourButtons.fxml"/>
</children>
</HBox>
</children>
</GridPane> [/CODE]
[CODE lang="java" title="Controller.java"]package test;
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 Controller implements Initializable {
@FXML private Button button1;
@Override
public void initialize(URL url, ResourceBundle rb) {
// ToDo
}
public void actionButton(ActionEvent event) {
if(event.getSource() == button1) {
System.out.println("Ein Button wurde betätigt.");
}
}
}[/CODE]
[CODE lang="java" title="TestProg.java"]package test;
import java.io.IOException;
import java.net.URISyntaxException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TestProg extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
FXMLLoader loaderViewMain = new FXMLLoader(getClass().
getResource("Main.fxml"));
Parent rootViewMain = loaderViewMain.load();
Scene sceneViewMain = new Scene(rootViewMain, 800, 600);
primaryStage.setTitle("TestProg");
primaryStage.setScene(sceneViewMain);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}[/CODE]
für mein Programm möchte ich ein FXML-File (FourButtons.fxml) in mein Haupt-FXML-File (Main.fxml) mehrfach einfügen. In FourButtons.fxml sind 4 Buttons in einem Grid angeordnet. Durch den Aufruf <fx:include source ="FourButtons.fxml"/> kann ich diese auch in Main.fxml einfügen. Das klappt alles wunderbar, auch wenn ich diese mehrfach einfüge.
Mein Problem ist nun, wie kann ich unterscheiden, ob ich den Button1 aus dem einem FourButtons.fxml gedrückt habe oder aus dem anderen? Den die ID-Bezeichung bleibt ja immer gleich. Ich hab dem Eingefügten ebenfalls eine ID gegeben, weiß aber nicht wie ich dies in meinem Controller einbaue.
Ich hoffe, das hier zusammen getackerte Beispiel erklärt es ein wenig.
Könnt ihr mir weiterhelfen?
Jetzt schon mal: Vielen Dank
[CODE lang="java" title="FourButtons.fxml"]<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?>
<GridPane
xmlns:fx="http://javafx.com/fxml/1"
xmlns="http://javafx.com/javafx/2.2"
fx:controller="Controller"
hgap="5"
vgap="5">
<children>
<Button
fx:id="button1"
prefHeight="50"
prefWidth="50"
onAction="#actionButton"
GridPane.rowIndex="0" GridPane.columnIndex="0">
</Button>
<Button
fx:id="button2"
prefHeight="50"
prefWidth="50"
onAction="#actionButton"
GridPane.rowIndex="1" GridPane.columnIndex="0">
</Button>
<Button
fx:id="button3"
prefHeight="50"
prefWidth="50"
onAction="#actionButton"
GridPane.rowIndex="0" GridPane.columnIndex="1">
</Button>
<Button
fx:id="button4"
prefHeight="50"
prefWidth="50"
onAction="#actionButton"
GridPane.rowIndex="1" GridPane.columnIndex="1">
</Button>
</children>
</GridPane>[/CODE]
[CODE lang="java" title="Main.fxml"]<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<GridPane
xmlns:fx="http://javafx.com/fxml/1"
xmlns="http://javafx.com/javafx/2.2"
fx:controller="Controller"
hgap="5"
vgap="5">
<children>
<HBox
spacing="10"
alignment="bottom_right"
GridPane.rowIndex="0" GridPane.columnIndex="0">
<children>
<fx:include
fx:id="fourButtons1"
source="FourButtons.fxml"/>
</children>
</HBox>
<HBox
spacing="10"
alignment="bottom_right"
GridPane.rowIndex="1" GridPane.columnIndex="0">
<children>
<fx:include
fx:id="fourButtons2"
source="FourButtons.fxml"/>
</children>
</HBox>
</children>
</GridPane> [/CODE]
[CODE lang="java" title="Controller.java"]package test;
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 Controller implements Initializable {
@FXML private Button button1;
@Override
public void initialize(URL url, ResourceBundle rb) {
// ToDo
}
public void actionButton(ActionEvent event) {
if(event.getSource() == button1) {
System.out.println("Ein Button wurde betätigt.");
}
}
}[/CODE]
[CODE lang="java" title="TestProg.java"]package test;
import java.io.IOException;
import java.net.URISyntaxException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TestProg extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
FXMLLoader loaderViewMain = new FXMLLoader(getClass().
getResource("Main.fxml"));
Parent rootViewMain = loaderViewMain.load();
Scene sceneViewMain = new Scene(rootViewMain, 800, 600);
primaryStage.setTitle("TestProg");
primaryStage.setScene(sceneViewMain);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}[/CODE]