我已经使用Gloun SceneBuilder设计了几个GUI这意味着每个GUI表单都有自己的控制器例如: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有关,但我真的不明白。
您可以简单地将同一控制器设置为两个fxml
文件1:
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");
}
}
1每个
fxml
使用不同的Controller
实例,因此它是而不是共享的一个