gpt4 book ai didi

java - 如何关闭并图标化 JavaFx 阶段

转载 作者:行者123 更新时间:2023-12-01 13:19:07 25 4
gpt4 key购买 nike

在我的 Java Fx 应用程序中,我创建了两个阶段。第一阶段是主 Controller 类 HomeController 中的默认阶段。第二个 AddNewEmailController 是通过调用 AddNewEmailController 类中的 showNewComposeNewEmail() 方法创建的。

新阶段创建得很好,但我尝试调用的所有方法(例如关闭 AddNewEmailController 阶段)都无法在 AddNewEmailController 阶段运行。

如何让这些方法发挥作用?

我还希望在 AddNewEmailController 阶段打开后无法访问 HomeController 阶段,就像弹出窗口一样。

我什至无法将 AddNewEmailController 阶段图标化

提前谢谢大家。

HomeController 类:

public class HomeController implements Initializable {

// Initializes the controller class.
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
@FXML
public void windowClose() {
Platform.exit();
}

@FXML
public void showNewComposeNewEmail() throws Exception {
new AddNewEmailController().newnewcomposeNewEmailStage();
}
}

AddNewEmailController 类:

public class AddNewEmailController implements Initializable {

public void setScreenParent(ScreensController screenParent) {
myController = screenParent;
}

// Initializes the controller class.
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}

public Stage newComposeNewEmail;

public void newnewcomposeNewEmailStage() throws IOException {
newComposeNewEmail = new Stage();
newComposeNewEmail.initStyle(StageStyle.UNDECORATED);
newComposeNewEmail.initStyle(StageStyle.TRANSPARENT);

Parent newComposeNewEmailRoot = FXMLLoader.load(getClass().getResource("/wakiliproject/Forms/AddNew/NewEmail/NewEmail.fxml"));

StageDraggable.stageDraggable(newComposeNewEmailRoot, newComposeNewEmail);

Scene newComposeNewEmailScene = new Scene(newComposeNewEmailRoot, 590, 670);

newComposeNewEmail.setScene(newComposeNewEmailScene);
newComposeNewEmail.show();
}

@FXML
private void newComposeNewEmailClose() {
newComposeNewEmail.close();
}

@FXML
private void newComposeNewEmailIconify() {
newComposeNewEmail.setIconified(true);
}
}

更新:

NewEmail 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.*?>

<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="wakiliproject.Forms.AddNew.NewEmail.TryEMailController">
<children>
<Label layoutX="190.0" layoutY="61.0" onMouseClicked="#newComposeNewEmailStageIconify" text="Minimise Window" />
<Label layoutX="300.0" layoutY="61.0" onMouseClicked="#newComposeNewEmailStageClose" text="Close Window" />
</children>
</AnchorPane>

最佳答案

在您的 fxml 中,您的 Controller

fx:controller="wakiliproject.Forms.AddNew.NewEmail.TryEMailController"

在您的代码中,类名称是

AddNewEmailController

请使它们相同并重新检查,您的方法将被调用。

要将新舞台作为父级的子级,请使用

newStage.initModality(Modality.WINDOW_MODAL);
newStage.initOwner(PrimaryStage);

关于java - 如何关闭并图标化 JavaFx 阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22192484/

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