JavaFx как добавить DirectoryChooser?

207
22 июля 2018, 00:30

Есть следующий класс:

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class ClientIO extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
    Parent root = FXMLLoader.load(getClass().getResource("GUI.fxml"));
    primaryStage.setTitle("client");
    primaryStage.setMinHeight(600);
    primaryStage.setMinWidth(620);
    primaryStage.setScene(new Scene(root, 620, 600));
    primaryStage.show();
}
public static void main(String[] args) {
    launch(args);
}
}

И есть класс, который отрисовывает весь GUI:

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;
import java.io.*;
import java.net.Socket;
import java.util.Date;
public class GUI {
@FXML
private Button connect;
...
@FXML
private Button disconnect;
private DirectoryChooser directoryChooser;
public void serverConnect(ActionEvent actionEvent) {
Stage stage = (Stage)rootdir.getScene().getWindow();
    File dir = directoryChooser.showDialog(stage);
    if (dir != null) {
        localpath.setText("RootDir!");
    }
}
public void serverDisconnect(ActionEvent actionEvent) {
}
}

В методе второго класса хочу вызвать DirectoryChooser для указания директории, но ловлю ошибку. Как я понял я неправильно получаю и передаю ссылку на объект Stage, но пока не понимаю как исправить. Подскажите каким образом реализовать вызов DirectoryChooser.

Answer 1

Разобрался. Сделал directoryChooser локальной переменной. В итоге получился код:

Stage stage = (Stage)rootdir.getScene().getWindow();
    DirectoryChooser directoryChooser = new DirectoryChooser();
    File dir = directoryChooser.showDialog(stage);
    if (dir != null) {
        localpath.setText(dir.getAbsolutePath());
    }
READ ALSO
Умножение чисел с помощью рекурсии

Умножение чисел с помощью рекурсии

Стараюсь понять как работает рекурсияВот пример как перемножить два числа с помощью цикла:

294
Проблема с заменой фрагмента

Проблема с заменой фрагмента

Имеется класс WorkoutDetailFragment который наследуется от FragmentПри попытке замены этого фрагмента выводится ошибка

175
Spring Data. Как создать been из интерфейса?

Spring Data. Как создать been из интерфейса?

Хочу научиться использовать Spring Data без Spring Boot

183