Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用一个控制器替换多个控制器(JavaFX)_Java_Javafx_Scenebuilder - Fatal编程技术网

用一个控制器替换多个控制器(JavaFX)

用一个控制器替换多个控制器(JavaFX),java,javafx,scenebuilder,Java,Javafx,Scenebuilder,我已经使用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

我已经使用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按钮处理程序) 因此,所有books事件都将被放入一个控制器中,而不是单独的控制器中 可能吗?如果是,怎么做?
\我看到它可能与lambda有关,但我真的不明白。

您可以简单地将同一控制器设置为两个
fxml
文件1:

A.fxml


1.
每个
fxml
都使用不同的
Controller
实例,因此它不是共享实例

欢迎使用StackOverflow!你所要求的并不完全清楚——请考虑一下你尝试过的或者你如何接近这个问题的例子,以及你陷入困境的具体地点。您可能还想阅读。@J.A.P但对于同一类别的函数,我会有太多的控制器,是否可以将它们全部分组到一个位置?另一个选项是使用一个提供公共功能的抽象控制器。然后每个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>
<?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>
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");
    }
}