gpt4 book ai didi

JAVA FXCollections LoadException 类不是有效类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:15:14 25 4
gpt4 key购买 nike

我正在尝试借助这个 Tutorial 实现一个包含一些数据的 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);
}
}

最佳答案

您更改了Person 类的包名。在教程中,包名称是fxmltableview,其中有application。您没有相应地更改导入。所以你需要

<?import application.Person ?>

代替

<?import fxmltableview.* ?>

关于JAVA FXCollections LoadException 类不是有效类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32502043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com