Я использую javaFX с файлом FXML.
при нажатии кнопки системный вызов функции в FxmlController.java, для которой требуется некоторая секунда для уточнения результата.
Во время разработки отображается графический интерфейсзамораживается, пока не будет получен результат.Я знаю, что для GUI я должен использовать threding, но я не знаю как.Однако это фрагмент кода моего FXMLController.java, который вызывается кнопкой onClick:
private void printOut() {
List<String> listString = null;
Hyperlink hyperLink = new Hyperlink("test");
VBox vBox = Main.getVbox();
vBox.getChildren().clear();
listString = readAllDoc(); //this is the function that needs time to run
vBox.getChildren().add(hyperLink);
}
Кроме того, функция printOut вызывается в файле fxml ... см. Ниже:
<Button fx:id="read" layoutX="34.0" layoutY="401.0"
mnemonicParsing="false" text="Read All" onAction="#printOut" />
Основное заключается в следующем:
public void start(Stage stage) throws IOException
{
// Create the FXMLLoader
FXMLLoader loader = new FXMLLoader();
// Path to the FXML File
String fxmlDocPath = getClass().getResource("MyFXML.fxml").getPath();
FileInputStream fxmlStream = new FileInputStream(fxmlDocPath);
// Create the Pane and all Details
AnchorPane root = (AnchorPane) loader.load(fxmlStream);
setPrimaryRoot(root);
ScrollPane sp = (ScrollPane) root.getChildren().get(2);
VBox vb = (VBox) sp.getContent();
setScrollPane(sp);
setVbox(vb);
// Create the Scene
Scene scene = new Scene(root);
// Set the Scene to the Stage
stage.setScene(scene);
// Set the Title to the Stage
stage.setTitle("Project");
setPrimaryStage(stage);
// Display the Stage
stage.show();
}
как можно запустить функцию "readAllDoc" в фоновом режиме, не останавливая графический интерфейс?спасибо