簡體   English   中英

如何關閉和圖標化JavaFx階段

[英]How to close and iconify a JavaFx stage

在我的Java Fx應用程序中,我創建了兩個階段。 第一階段是主控制器類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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM