2017-10-11 17 views
0

実際には、メニューベースのプログラム(メニューバー、メニュー、メニュー)を作成しています。すべてのメニュー項目から、そのような新しいウィンドウを呼び出します。現在のウィンドウを破棄し、メインウィンドウに新しいfxmlウィンドウをロードします

@FXML 
private Pane rootP; 
public static Pane root; 


@Override 
    public void initialize(URL url, ResourceBundle rb) { 
     root = rootP; 
    } 

@FXML 
void loadWindow2Action(ActionEvent event) throws IOException { 
    root.getChildren().clear(); 
    Pane newLoadedPane = (Pane) FXMLLoader.load(getClass().getResource("window2.fxml")); 
    root.getChildren().add(newLoadedPane); 
} 

ここでは、テーブルビューが1つのWindow2 fxml画面があります。その表の中には、すべての行にボタンを配置しています。
私の問題は、新しいfxmlページを読み込み、そのボタンをクリックしたときに現在のfxmlページを破棄する方法です。

スイングでは、単純に現在の内部フレームを廃棄し、新しい内部フレームを呼び出します。何かのようなもの 。

StdInternalFrame f = new StdInternalFrame(desktop); 
this.dispose(); 
desktop.add(f); 

enter image description here

これはこの

 

    btnPay.setOnAction(e -> {  
    try {  
     MemberWindowController.root.getChildren().clear();  
     Pane newLoadedPane = (Pane)FXMLLoader.load(getClass().getResource("Window3.fxml"));  
     MemberWindowController.root.getChildren().add(newLoadedPane);  
     } catch (IOException ex) {  
     Logger.getLogger(Window3Controller.class.getName()).log(Level.SEVERE, null, ex);  
     }  
    }); 


答えて

0

これは実際には本当に簡単ですしていますために、他のより良い方法です、あなただけの以下のコードを実行する必要がありますステージを閉じるときはいつでも:

Node node = (Node)event.getSource(); 
Stage stage = (Stage) node.getScene().getWindow(); 
stage.close(); 

言葉 "事象" とのようなあなたのActionEventを参照してください。それを試してみてください

public void something(ActionEvent event){ 

} 

、完璧に動作します。

+0

あなたのコードは私のアプリケーションを閉じる現在のウィンドウではありません。 – kar

関連する問題