簡體   English   中英

在同一窗口內更改場景

[英]Change scene within the same window

如何在同一窗口中更改場景,而不是完全打開新窗口。

下面是將可選選項添加到選擇框的位置,在進行選擇時,偵聽器位於末尾,以“觀察”,單擊該更改后,場景會發生變化。

private void formulaOption2(){
list2.removeAll(list2);
String a = "Current Ratio";
String b = "Working Capital Ratio";
String c = "Debt to Equity Ratio";
String d = "Gross Profit Margin";
list2.addAll(a,b,c,d);
ChoiceBox2.getItems().addAll(list2);

//A LISTENER TO OBSERVE WHEN USER SELECTS ITEM
ChoiceBox2.getSelectionModel().selectedItemProperty().addListener( (v, oldValue, newValue) ->  {
    try {
        comboSelect2();
    } catch (IOException ex) {
        Logger.getLogger(Tab1FXMLController.class.getName()).log(Level.SEVERE, null, ex);
    }
}  );
}

以下是加載FXML文件的代碼:

 public void comboSelect2() throws IOException {
if("Current Ratio".equals(ChoiceBox2.getSelectionModel().getSelectedItem())){

   FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Tab2FXML.fxml"));
         Parent root1 = (Parent) fxmlLoader.load();
         Stage stage = new Stage();
         stage.setTitle("Current Ratio");
         stage.setScene(new Scene(root1));
         stage.show();
}

}

只需用所需的新根替換當前場景的根:

public void comboSelect2() throws IOException {
    if("Current Ratio".equals(ChoiceBox2.getSelectionModel().getSelectedItem())){

       FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Tab2FXML.fxml"));
           Parent root1 = (Parent) fxmlLoader.load();
           ChoiceBox2.getScene().setRoot(root1);
    }
}

暫無
暫無

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

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