JavaFX 8 on Button单击显示其他场景

时间:2017-03-29 07:19:12

标签: java javafx-8

您好我正在为我的工作开发PIN生成器,因为我是Java的新手,我遇到了一些困难,特别是在使用JavaFX时。 我想让程序在点击每个按钮时显示另一个.fxml文件。

这是我的代码:

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;
}

1 个答案:

答案 0 :(得分:1)

此代码应该有效 像这样修改你的主类:

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();
    }
}

这是你的pressButton功能:

 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();
      }
 }