2017-03-29 60 views
0

您好,我目前正在爲我的工作開發一個PIN生成器,因爲我完全是Java的新手,我遇到了一些困難,特別是在使用JavaFX時。 我想讓程序在單擊其中一個按鈕時顯示另一個.fxml文件。JavaFX 8 on Button點擊顯示其他場景

這裏是我的代碼:

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
public class main extends Application { 
    public static void main(String[] args) { 
     Application.launch(main.class, args); 
    } 
     @Override 
     public void start(Stage stage) throws Exception { 
      Parent root = FXMLLoader.load(getClass().getResource("/view/main.fxml")); 

      stage.setTitle("PIN-Generator"); 
      stage.setScene(new Scene(root, 600, 400)); 
      stage.show(); 
     } 
    } 

我創建了一個控制器類爲現場的每個按鈕。

控制器類代碼:

package view; 

import javafx.fxml.FXML; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 

public class MainController { 

    @FXML 
    private Label dpmadirektpropingenerator; 
    @FXML 
    private Button unlockPinButton; 
    @FXML 
    private Button confirmationPinButton; 
} 
+0

這裏是關於同一個問題,它可以幫助一個答案:http://stackoverflow.com/questions/27160951/javafx-open-another-fxml-in-the-another-window-with-button – boooom

回答

0

此代碼應工作。
修改您的主類是這樣的:

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
public class main extends Application { 
public static void main(String[] args) { 
    Application.launch(main.class, args); 
} 
    static Stage stg; 
    @Override 
    public void start(Stage stage) throws Exception { 
    this.stg = stage; 
     Parent root = FXMLLoader.load(getClass().getResource("/view/main.fxml")); 
     stage.setTitle("PIN-Generator"); 
     stage.setScene(new Scene(root, 600, 400)); 
     stage.show(); 
    } 
} 

,這裏是你的輕觸式功能:

public void pressButton(ActionEvent event){    
    try { 
    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("sedondFXML.fxml")); 
      Parent root = (Parent) fxmlLoader.load(); 
      Stage stage = new Stage(); 
      stage.setScene(new Scene(root)); 
      stage.show(); 
      main.stg.close(); 
    } catch(Exception e) { 
     e.printStackTrace(); 
     } 
} 
+0

在我的主代碼中進行了一些修改後,這個功能很好:) – kinansaeb

+0

非常感謝,你知道如何讓它關閉開啓第二階段的第一階段? – kinansaeb

+0

@kinansaeb我編輯了我的答案 –