Класс LoadException JAVA FXCollections не является допустимым типом
Я пытаюсь реализовать TableView с некоторыми данными с помощью этого учебника.
Я застрял на заполнение данных из моего "Person.java" в TableView.
Я отследил проблему до части <Person firstName="Jacob" lastName="Smith" email="jacob.smith@example.com" />
внутри файла "fxmltableview.fxml" в самом низу.
Таким образом, кажется, что по какой-то причине мой "observableArrayList" не всегда содержит объекты "Person.java". "String.java" разрешено. У меня нет идей для изучения файлов, так как я прочитал несколько раз слово в слово через учебник, и я не вижу никакой разницы между моими файлами. Всякий раз, когда я удаляю <Person someStuff/>
это работает отлично.
Как я могу избавиться от этой надоедливой ошибки?
Причина: javafx.fxml.LoadException: Person не является допустимым типом. /D:/workspace/TableViewExampleFXML/bin/application/fxmltableview.fxml:40
FXML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<?import fxmltableview.*?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.cell.PropertyValueFactory?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.collections.FXCollections?>
<GridPane alignment="CENTER" hgap="10.0" maxHeight="-Infinity"
maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
prefHeight="400.0" prefWidth="600.0" vgap="10.0" xmlns="http://javafx.com/javafx/8"
xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.FXMLTableViewController">
<TableView fx:id="tableView" prefHeight="200.0" prefWidth="200.0"
GridPane.columnIndex="0" GridPane.rowIndex="1">
<columns>
<TableColumn prefWidth="75.0" text="First Name">
<cellValueFactory>
<PropertyValueFactory property="firstName" />
</cellValueFactory>
</TableColumn>
<TableColumn prefWidth="75.0" text="Last Name">
<cellValueFactory>
<PropertyValueFactory property="lastName" />
</cellValueFactory>
</TableColumn>
<TableColumn prefWidth="75.0" text="Email Address">
<cellValueFactory>
<PropertyValueFactory property="email" />
</cellValueFactory>
</TableColumn>
</columns>
<items>
<FXCollections fx:factory="observableArrayList">
<Person firstName="Jacob" lastName="Smith" email="jacob.smith@example.com" />
</FXCollections>
</items>
</TableView>
</GridPane>
"Person.java" скопирован / вставлен из учебника, поэтому я так расстроен, что он не работает для меня. В любом случае я буду вставлять это здесь.
package application;
import javafx.beans.property.SimpleStringProperty;
public class Person {
private final SimpleStringProperty firstName = new SimpleStringProperty("");
private final SimpleStringProperty lastName = new SimpleStringProperty("");
private final SimpleStringProperty email = new SimpleStringProperty("");
public Person() {
this("", "", "");
}
public Person(String firstName, String lastName, String email) {
setFirstName(firstName);
setLastName(lastName);
setEmail(email);
}
public String getFirstName() {
return firstName.get();
}
public void setFirstName(String fName) {
firstName.set(fName);
}
public String getLastName() {
return lastName.get();
}
public void setLastName(String fName) {
lastName.set(fName);
}
public String getEmail() {
return email.get();
}
public void setEmail(String fName) {
email.set(fName);
}
}
1 ответ
Вы изменили имя пакета для вашего Person
учебный класс. В учебнике имя пакета fxmltableview
где у вас есть application
, Вы не изменили импорт соответственно. Так вам нужно
<?import application.Person ?>
вместо
<?import fxmltableview.* ?>