Hallo!
Habe hier ein fxml JAVAFX Applikation die in einem Thread die Daten aktualisieren soll. Tatsächlich macht er gar nichts, nur wenn man auf Aufwärts Sort oder Abwärts Sort klickt erscheinen die Daten.
Ein ähnliches Bsp. ohne fxml funktioniert - was mache ich falsch?
Danke für Antworten.:shock:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane prefHeight="265.0000999999975" prefWidth="282.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="com.moho.lohnzettel.gui.TestFX">
<center>
<TableView fx:id="pdfTable" prefHeight="200.0" prefWidth="200.0">
<columns>
<TableColumn editable="false" minWidth="100.0" prefWidth="200.0" text="Filename" fx:id="fileNameColumn" />
</columns>
</TableView>
</center>
</BorderPane>
Habe hier ein fxml JAVAFX Applikation die in einem Thread die Daten aktualisieren soll. Tatsächlich macht er gar nichts, nur wenn man auf Aufwärts Sort oder Abwärts Sort klickt erscheinen die Daten.
Ein ähnliches Bsp. ohne fxml funktioniert - was mache ich falsch?
Danke für Antworten.:shock:
Java:
package com.moho.lohnzettel.gui;
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class StartMainFX extends Application {
private Stage primaryStage;
private Scene scene;
public Stage getPrimaryStage() {
return primaryStage;
}
public Scene getScene() {
return scene;
}
private BorderPane rootLayout;
public static void main(String[] args) {
launch(args);
}
// @Override
public void start(Stage primaryStage) throws Exception {
this.primaryStage = primaryStage;
this.primaryStage.setTitle("Lohnzettel PDF");
try {
// Load the root layout from the fxml file
FXMLLoader loader = new FXMLLoader(MenuController.class.getResource("view/TestFX.fxml"));
rootLayout = (BorderPane) loader.load();
scene = new Scene(rootLayout);
primaryStage.setScene(scene);
primaryStage.show();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.moho.lohnzettel.gui;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
public class TestFX implements Initializable {
@FXML
private TableView<Data> pdfTable;
@FXML
private TableColumn<Data, String> fileNameColumn;
@Override
public void initialize(URL location, ResourceBundle resources) {
fileNameColumn.setCellValueFactory(new PropertyValueFactory<Data, String>("fileName"));
start();
}
@FXML
public void start() {
for (int i = 0; i < 10; i++) {
Data data = new Data();
data.setFileName(i + " Before");
pdfTable.getItems().add(data);
}
Thread threadAction1 = new Thread() {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
ObservableList<Data> items = pdfTable.getItems();
for (int i = 0; i < items.size(); i++) {
try {
Thread.sleep(1000);
Data d = items.get(i);
System.out.println("test");
d.setFileName("After " + i);
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
threadAction1.start();
}
public class Data {
private SimpleStringProperty fileName;
public String getFileName() {
return fileName.get();
}
public Data() {
super();
this.fileName = new SimpleStringProperty();
}
public void setFileName(String fileName) {
this.fileName.set(fileName);
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane prefHeight="265.0000999999975" prefWidth="282.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="com.moho.lohnzettel.gui.TestFX">
<center>
<TableView fx:id="pdfTable" prefHeight="200.0" prefWidth="200.0">
<columns>
<TableColumn editable="false" minWidth="100.0" prefWidth="200.0" text="Filename" fx:id="fileNameColumn" />
</columns>
</TableView>
</center>
</BorderPane>