我使用Gloun SceneBuilder设计了多个GUI 这意味着每个GUI表单都会有自己的contoller 例如:AddBookForm.fxml将具有AddBookController.java
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class AddBookController {
@FXML
private Button btnAddBook;
@FXML
void AddBook(MouseEvent event) {
}
}
EditBookForm.fxml将具有EditBookController
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class PleaseProvideControllerClassName {
@FXML
private Button btnEditBook;
@FXML
void editBook(MouseEvent event) {
}
}
所以我想将两个GUI的控制器合为一个,我将其命名为BookController(它将具有AddBook和EditBook按钮处理程序) 因此,所有书籍事件都将放在一个控制器中,而不是单独的 那可能吗?如果是这样,怎么办? \我看到它可能与lambda有关,但是我真的不明白。
答案 0 :(得分:1)
您可以在两个fxml
文件中简单地设置相同的控制器:
A.fxml
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.HBox?>
<HBox xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller">
<children>
<Button fx:id="buttonA" onAction="#buttonAClicked" text="A" textAlignment="CENTER" />
</children>
</HBox>
B.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.HBox?>
<HBox xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="src.tests.xml.Controller">
<children>
<Button fx:id="buttonB" onAction="#buttonBClicked" text="B" textAlignment="CENTER" />
</children>
</HBox>
Controller.java (两者均使用)
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class Controller{
@FXML
private Button buttonA, buttonB;
public void buttonAClicked(){
System.out.println("Button A clicked");
}
public void buttonBClicked(){
System.out.println("Button B clicked");
}
}