gpt4 book ai didi

java - 将多个 Controller 替换为一个 Controller (JavaFX)

转载 作者:行者123 更新时间:2023-11-30 05:51:09 28 4
gpt4 key购买 nike

我使用 Gloun SceneBuilder 设计了几个 GUI这意味着每个 GUI 表单都有自己的 Controller 例如: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 的 Controller 合二为一,我将其命名为 BookController(它将具有 AddBook 和 EditBook 按钮处理程序)因此,所有书籍事件都将进入一个 Controller 而不是单独的 Controller 那可能吗?如果是这样,怎么办?\我看到它可能与 lambda 有关,但我真的不明白..

最佳答案

您可以简单地将相同的 Controller 设置为两个 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 实例,因此它 不是共享实例

关于java - 将多个 Controller 替换为一个 Controller (JavaFX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53902201/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com