Как открыть другой экран в JavaFX (не файл FXML) - PullRequest
0 голосов
/ 04 января 2019

Я очень новичок в JavaFX.Я хочу общаться между двумя окнами в моей программе, но я не знаю, как это сделать.Например: после успешного входа в систему появится другой экран (но я не хочу загружать файл FXML, потому что я использовал цикл для создания кнопок переключения в этом окне вместо перетаскивания в файле FXML).Я не знаю, имеет ли это смысл или нет.Если нет, пожалуйста, прости меня: (

Main.java

package sample;

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 {

@Override
public void start(Stage primaryStage) throws Exception{

Parentroot=FXMLLoader.load(getClass().getResource("sample.fxml"));

    primaryStage.setTitle("Login");
    primaryStage.setScene(new Scene(root, 400,300));
    primaryStage.show();
}


public static void main(String[] args) {
    launch(args);
    }
}

Controller.java

import javafx.scene.control.TextField;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import java.io.IOException;

public class Controller {
@FXML
private TextField usernameField;
@FXML
private TextField passwordField;

@FXML
public void login(){
    if(usernameField.getText().equals("admin") && passwordField.getText().equals("123")){
        successLogin();
    }
}

public void successLogin(){
    try {
        Parent root = FXMLLoader.load(getClass().getResource("anotherscene.fxml"));
        Stage stage = new Stage(StageStyle.DECORATED);
        stage.show();

    }catch (IOException e){
        e.printStackTrace();
    }

}
}

AnotherScene.java

package sample;

import javafx.application.Application;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;

public class AnotherScene implements Initializable {
    ToggleButton[][] matrix;
    private static final int SIZE = 10;
    private static int length = SIZE;
    private static int width = SIZE;
    @FXML
    private BorderPane borderPane;



@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
    Parent root = null;
    try{
        root = FXMLLoader.load(getClass().getResource("anotherscene.fxml"));
    }catch (IOException e){
        e.getStackTrace();
    }
    Stage stage = new Stage();

    VBox vBox = new VBox();
    vBox.getChildren().add(new Label("Seat Number: "));
    borderPane.setLeft(vBox);

    GridPane gridPane = new GridPane();
    gridPane.setHgap(10);
    gridPane.setVgap(10);
    borderPane.setCenter(gridPane);

    matrix = new ToggleButton[length][width];


    for(int row = 0; row < length; row++){
        for(int col = 0; col < width; col++){
            matrix[row][col] = new ToggleButton();
            matrix[row][col].setText(row + "" +col);
            matrix[row][col].setPrefWidth(40);
            gridPane.add(matrix[row][col], row, col);

        }
    }

    //      Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    stage.setTitle("Hello World");
    Scene scene = new Scene(root, 700, 500);
    stage.setScene(scene);
    stage.show();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...