每次,当我想设置表的项目时,我声明我收到了一个例外。我不知道自己做错了什么。
错误代码:
Okt 09, 2014 11:06:10 AM application.Main start
SCHWERWIEGEND: null
javafx.fxml.LoadException:
/D:/Users/muellerl/workspace/Hydaba/bin/application/table_ui.fxml
at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at application.Main.start(Main.java:17)
at com.sun.javafx.application.LauncherImpl$8.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$7.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$6$1.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$6$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl$6.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$300(Unknown Source)
at com.sun.glass.ui.win.WinApplication$4$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at controller.main_controller.initialize(main_controller.java:49)
... 20 more
因此,当我删除einheitenTable.setItems(einheitendata);
时,我没有收到错误消息。他找到了源" table_ui.fxml"。所以我认为这是TableView的一个问题。
这是我写的其他代码。希望你能帮我解决这个问题。第49行中的错误属于main_controller.java。
main.java:
package application;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
public class Main extends Application {
@Override
public void start(Stage Stage) {
try {
Parent root = FXMLLoader.load(getClass().getResource(
"/application/table_ui.fxml"));
Scene scene = new Scene(root);
Stage.setTitle("Hydaba-Client");
Stage.setScene(scene);
Stage.show();
} catch (Exception e) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, e);
}
}
public static void main(String[] args) {
launch(args);
}
}
einheiten_table.java:
package table;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
public class einheiten_table {
private final SimpleIntegerProperty rBleinr;
private final SimpleStringProperty rEinheit;
private final SimpleStringProperty rLiteeinheit;
private final SimpleStringProperty rEinheitengruppe;
private final SimpleStringProperty rBasiseinheit;
private final SimpleIntegerProperty rUmrechnungsfaktor;
public einheiten_table (int sBleinr, String sEinheit, String sLiteeinheit, String sEinheitengruppe,String sBasiseinheit, int sUmrechnungsfaktor) {
this.rBleinr = new SimpleIntegerProperty(sBleinr);
System.out.println(sBleinr);
this.rEinheit = new SimpleStringProperty(sEinheit);
System.out.println(sEinheit);
this.rLiteeinheit = new SimpleStringProperty(sLiteeinheit);
System.out.println(sLiteeinheit);
this.rEinheitengruppe = new SimpleStringProperty(sEinheitengruppe);
System.out.println(sEinheitengruppe);
this.rBasiseinheit = new SimpleStringProperty(sBasiseinheit);
System.out.println(sBasiseinheit);
this.rUmrechnungsfaktor = new SimpleIntegerProperty(sUmrechnungsfaktor);
System.out.println(sUmrechnungsfaktor);
}
/** rBleinr **/
public Integer get_rBleinr() {
return rBleinr.get();
}
public void set_rBleinr(Integer set) {
rBleinr.set(set);
}
/** rEinheit **/
public String get_rEinheit() {
return rEinheit.get();
}
public void set_rEinheit(String set) {
rEinheit.set(set);
}
/** rLiteeinheit **/
public String get_rLiteeinheit() {
return rLiteeinheit.get();
}
public void set_rLiteeinheit(String set) {
rLiteeinheit.set(set);
}
/** rEinheitengruppe **/
public String get_rEinheitengruppe() {
return rEinheitengruppe.get();
}
public void set_rEinheitengruppe(String set) {
rEinheitengruppe.set(set);
}
/** rBasiseinheit **/
public String get_rBasiseinheit() {
return rBasiseinheit.get();
}
public void set_rBasiseinheit(String set) {
rBasiseinheit.set(set);
}
/** rUmrechnungsfaktor **/
public Integer get_rUmrechnungsfaktor() {
return rUmrechnungsfaktor.get();
}
public void set_rUmrechnungsfaktor(Integer set) {
rUmrechnungsfaktor.set(set);
}
}
main_controller.java:
package controller;
import java.net.URL;
import java.util.ResourceBundle;
import table.einheiten_table;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
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 main_controller implements Initializable {
@FXML
TableView<einheiten_table> einheitenTable;
@FXML
TableColumn<einheiten_table, Integer> Bleinr_col;
@FXML
TableColumn<einheiten_table, String> Einheit_col;
@FXML
TableColumn<einheiten_table, String> Liteeinheit_col;
@FXML
TableColumn<einheiten_table, String> Einheitengruppe_col;
@FXML
TableColumn<einheiten_table, String> Basiseinheit_col;
@FXML
TableColumn<einheiten_table, Integer> Umrechnungsfaktor_col;
final ObservableList<einheiten_table> einheitendata = FXCollections.observableArrayList(
new einheiten_table(9, "Stelle 1", "Stelle 2", "Stelle 3", "Stelle 4", 10)
);
@Override
public void initialize(URL location, ResourceBundle resources) {
Bleinr_col.setCellValueFactory(new PropertyValueFactory<einheiten_table, Integer>("rBleinr"));
Einheit_col.setCellValueFactory(new PropertyValueFactory<einheiten_table, String>("rEinheit"));
Liteeinheit_col.setCellValueFactory(new PropertyValueFactory<einheiten_table, String>("rLiteeinheit"));
Einheitengruppe_col.setCellValueFactory(new PropertyValueFactory<einheiten_table, String>("rEinheitengruppe"));
Basiseinheit_col.setCellValueFactory(new PropertyValueFactory<einheiten_table, String>("rBasiseinheit"));
Umrechnungsfaktor_col.setCellValueFactory(new PropertyValueFactory<einheiten_table, Integer>("rUmrechnungsfaktor"));
// System.out.println(einheitendata.size());
einheitenTable.setItems(einheitendata);
}
}
答案 0 :(得分:1)
我的第一个猜测是TableView的名称在FXML文件和Controller类中不匹配。目前您已将其定义为
@FXML
TableView<einheiten_table> einheitenTable;
再次我猜它应该是
@FXML
private TableView<einheiten_table> Einheiten_table;
根据您的命名方法:)
请检查FXML文件中的fx:id
。