Donc, j'essaie de changer de scène en JavaFX mais je n'arrive pas à le faire fonctionner quand je l'ai codé en dur. J'ai pu le faire fonctionner en utilisant des expressions lambda.Commutation de scènes en erreur JavaFX (FXML)
public class Main extends Application {
Stage window;
Scene scene1;
Scene scene2;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
Label label = new Label("Welcome to the first scene");
Button bttn1 = new Button("Go to second scene");
bttn1.setOnAction(e -> window.setScene(scene2));
//Scene 1
VBox layout1 = new VBox(20);
layout1.getChildren().addAll(label, bttn1);
scene1 = new Scene(layout1, 400, 400);
//Scene 2
Button bttn2 = new Button("Go to first scene");
bttn2.setOnAction(e -> window.setScene(scene1));
StackPane layout2 = new StackPane();
layout2.getChildren().add(bttn2);
scene2 = new Scene(layout2, 400, 500);
window.setScene(scene1);
window.setTitle("Test");
window.show();
}
Cependant, le projet comporte quelques différentes interfaces graphiques et je préfère concevoir l'interface graphique de scène dans FXML Builder que de les coder en dur le chemin FX. Cependant quand j'ai essayé de faire la manière FXML cela n'a pas fonctionné une erreur apparaît toujours quand j'appuie sur le bouton.
C'est le code de contrôleur de document.
public class FXMLDocumentController implements Initializable {
@FXML
private Button button1;
@FXML
private Button button2;
@FXML
private void handleButtonAction(ActionEvent event) throws IOException {
Stage stage;
Parent root;
if(event.getSource() == button1){
stage=(Stage)button1.getScene().getWindow();
root = FXMLLoader.load(getClass().getResource("FXML2.fxml"));
}
else{
stage=(Stage)button2.getScene().getWindow();
root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
}
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}
Dans votre message, 'Initializable {' et 'public extends Main extends Application {' ne sont pas formatés en tant que code. – SteveFest
Désolé, je vais corriger ça maintenant. Merci pour l'endroit. – HoiSinz