java - 我在 javaFX 中工作,想通过在 obserableArrayList 中添加数据来填充 tabelView,方法是访问另一个控制器但不工作
问题描述
我使用savedCustomerInfoController
该类使用SceneBuilder制作表格。在这个控制器中,我尝试savedCustomerInfo
使用FXMLLoader
. 我使用DataTableAccessor
类来填充表格。但这不起作用,我找不到任何问题,即使 IntelliJ IDEA 也没有显示任何错误或警告。请帮我。如果我在写这个问题或在我的代码中犯了一个愚蠢的错误,请原谅我,因为我是新来的并且使用 JavaFX 工具包。
第一个控制器,我在其中制作包含 TabelView 和可观察 ArrayList 的第二个控制器的对象
public class Controller implements Initializable {
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/sample/savedCustomerInfo.fxml"));
Region region = loader.load();
savedCustomerInfoController obj = new savedCustomerInfoController();
obj.dataList.add(new DataTableAccessor("50" , "sarmad"));
obj.dataList.add(new DataTableAccessor("50" , "sarmad"));
}
catch (IOException e)
{
System.out.println(e);
}
}
第二控制器
public class savedCustomerInfoController implements Initializable
{
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
ageClm.setCellValueFactory(new PropertyValueFactory<DataTableAccessor , String>("age"));
nameClm.setCellValueFactory(new PropertyValueFactory<DataTableAccessor , String>("name"));
dataTable.setItems(dataList);
}
@FXML
private TableColumn<DataTableAccessor, String> ageClm;
@FXML
private TableView<DataTableAccessor> dataTable;
@FXML
private TableColumn<DataTableAccessor, String> nameClm;
ObservableList<DataTableAccessor> dataList = FXCollections.observableArrayList();
类控制 tableView
public class DataTableAccessor {
private SimpleStringProperty age;
private SimpleStringProperty name;
public String getAge() {
return age.get();
}
public SimpleStringProperty ageProperty() {
return age;
}
public void setAge(String age) {
this.age.set(age);
}
public String getName() {
return name.get();
}
public SimpleStringProperty nameProperty() {
return name;
}
public void setName(String name) {
this.name.set(name);
}
public DataTableAccessor(String age, String name)
{
this.age = new SimpleStringProperty(age);
this.name = new SimpleStringProperty(name);
}
}
输出
解决方案
您需要访问由 FXMLLoader 创建的 savedCustomerInfoController 实例,而不是创建一个新实例。
代替
savedCustomerInfoController obj = new savedCustomerInfoController();
和
savedCustomerInfoController obj = (savedCustomerInfoController)loader.getController();
那应该可以解决您的问题。如果没有,您将需要发布其余代码。
推荐阅读
- recharts - 如何在图表中添加 y 轴的百分比?
- c# - C#winforms,无法添加自定义控件超过400
- python - 使用 Quantized MobilenetV1 Tf-lite 预测期间不同图像的相同输出
- c++ - c++参考错误
- c++ - 无法解决PCL气缸检测导致的错误
- typescript - 回家 Object.assign 可以将对象的副本发送到函数,而扩展运算符不可以吗?
- ios - 如何在 swift 中以编程方式在 Gallery 中创建文件夹?
- postgresql - 如何使用 Postgresql 在 Postgis 中将不相交的多边形合并为单个多边形
- ios - 从 SwiftUI 中的 NavigationBarItem 菜单显示不同的视图
- amazon-web-services - 如何通过 cloudformation 在 lambda 中添加数据库代理?