Я пытаюсь закодировать функциональность кнопки, созданной с помощью SceneBuilder. Я нашел раздел «Код» в Scene Builder и установил имя метода, который будет запускаться при нажатии на кнопку (например, fileSelector). В методе я должен использовать переменную FileChooser (мне нужно взять изображение из P C и сохранить его в переменную «Файл»).
Я скопировал скелет образца контроллера и вставил его в мой контроллер учебный класс. Теперь я не знаю, как реализовать метод, потому что мне нужна переменная Stage для использования с переменной FileChooser, но переменная stage дана для метода public void start(Stage primaryStage)
.
Мой основной класс
package application;
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
public class MainExample extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
Pane firstPane = FXMLLoader.load(MainExample.class.getClassLoader().getResource("buttonExample.fxml"));
Scene firstScene = new Scene(firstPane);
primaryStage.setScene(firstScene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Мой класс контроллеров
package application;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class MyController {
@FXML
private Button selectFile;
@FXML
void fileSelector(ActionEvent event) {
FileChooser fileChooser = new FileChooser();
File file = fileChooser.showOpenDialog(stage);
}
}
F XML с кнопки
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.Pane?>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="135.0" prefWidth="280.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MyController">
<children>
<Button fx:id="selectFile" layoutX="102.0" layoutY="55.0" mnemonicParsing="false" onAction="#fileSelector" text="SelectFile" />
</children>
</Pane>