Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx 将文本字段文本设置为TableView列中的数据_Javafx_Fxml - Fatal编程技术网

Javafx 将文本字段文本设置为TableView列中的数据

Javafx 将文本字段文本设置为TableView列中的数据,javafx,fxml,Javafx,Fxml,我正在使用MVC模型(FXML文件和控制器类)创建一个Java应用程序。根据SQL数据库中的数据,在其中一个场景中有一个TableView,其中有一个名为ID的列,该列保存志愿者的ID。我需要从该列中获取志愿者ID,并将下一个场景中文本字段的文本设置为该ID。我还希望能够使用该ID的值从数据库表的特定元组访问数据。我该怎么做?现在,下一个场景中的文本字段每次都显示为0 PFB两个控制器类的代码。如果我做得完全错误,请原谅我——我对编码真的很陌生 查看所有志愿者控制器(带有TableView的场景

我正在使用MVC模型(FXML文件和控制器类)创建一个Java应用程序。根据SQL数据库中的数据,在其中一个场景中有一个TableView,其中有一个名为ID的列,该列保存志愿者的ID。我需要从该列中获取志愿者ID,并将下一个场景中文本字段的文本设置为该ID。我还希望能够使用该ID的值从数据库表的特定元组访问数据。我该怎么做?现在,下一个场景中的文本字段每次都显示为0

PFB两个控制器类的代码。如果我做得完全错误,请原谅我——我对编码真的很陌生

查看所有志愿者控制器(带有TableView的场景)

public类viewAllVolsCeneController实现可初始化{
@FXML公共TableView tableviewAllVols;
@FXML公共表列colID;
@FXML公共表colForename列;
@FXML公共表列colname;
@FXML公共表格部门;
@FXML公共表列colSkill;
@FXML公共按钮btnBack;
ObservableList volData=FXCollections.observableArrayList();
公共int-selectedVolID;
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
试一试{
连接连接器=驱动器连接器();
String query=“从志愿者内部加入部门中选择志愿者ID、姓名、部门名称、技能”
+“on志愿者.deptID=departments.deptID”;
ResultSet rs=conn.createStatement().executeQuery(查询);
while(rs.next()){
添加(新志愿者(rs.getInt(“志愿者ID”)、rs.getNString(“名字”),
rs.getNString(“姓氏”)、rs.getNString(“deptName”)、rs.getNString(“技能”);
}
}
捕获(例外e){
e、 printStackTrace();
}
colID.setCellValueFactory(新的PropertyValueFactory(“志愿者ID”);
colForename.setCellValueFactory(新属性ValueFactory(“forename”);
colname.setCellValueFactory(新财产价值工厂(“姓氏”);
colDepartment.setCellValueFactory(新属性ValueFactory(“deptName”);
colSkill.setCellValueFactory(新属性值工厂(“技能”));
tableviewAllVols.setItems(volData);
}
public int doubleClickRow(){
tableviewAllVols.setOnMouseClicked((MouseeEvent事件)->{
如果(event.getClickCount()>1){
试一试{
亲本卷形亲本;
volFormParent=fxmloader.load(getClass().getResource(“volForm.fxml”);
场景volFormScene=新场景(volFormParent);
阶段窗口=(阶段)((节点)事件.getSource()).getScene().getWindow();
window.setScene(volFormScene);
window.show();
}捕获(IOE异常){
e、 printStackTrace();
}
}
});
返回selectedVolID;
}
public void selectedVolID(){
selectedVolID=tableviewAllVols.getSelectionModel().getSelectedItem().GetVolectionId();
}
志愿者表单控制器(带有文本字段的场景,我需要使用TableView的ID列中的数据填充该字段)


公共类volFormController实现可初始化{
@FXML公共文本字段txtForename;
@FXML公共文本字段txtNames;
@FXML公共文本字段TXT学校;
@FXML公共文本字段txtEmail;
@FXML公共文本字段txtPhone;
@FXML公共组合框comboboxDept;
@FXML公共日期选择器datepickJoin;
@FXML公共选择框choiceboxSkill;
@FXML公共按钮btnSave;
@FXML公共文本字段txtVolID;
@FXML公共按钮btnCancel;
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
ViewAllVolsCeneController selectedVol=新建ViewAllVolsCeneController();
setText(Integer.toString(selectedVol.selectedVolID));
}

这里似乎有几个问题,您没有更新此返回的值:

return selectedVolID;
更具体地说,为什么要在一个只安装侦听器的方法中重复该值

在单击侦听器中,您应该调用该方法来更新值:

selectedVolID();
你应该改变名字,这样事情就不会那么混乱了


你真的应该设置一些断点并逐步完成你的代码。我不认为它正在做你认为它正在做的事情,而逐步完成是最好的解决方法。

这是否回答了你的问题?与上一个错误相同(相同)问题…学习如何使用fxml并遵守java命名约定的教程!@kleopatra我的问题得到了部分回答。我遇到了一个异常,我现在已经解决了,但我仍然不知道如何将TextField的文本设置为TableView列中的数据。是的,我看过很多关于fxml的教程,但都没有其中(至少是我见过的那些人)似乎回答了这个问题。请重新阅读我在前面的评论,并按照它的建议去做。您试图做的是完全错误的,因为您似乎不了解fxml如何工作的基本机制(这次它没有抛出NPE的唯一原因是你访问了一个int-默认值为0-与一个对象-默认值为null)。顺便说一句:注意看教程与完成教程之间的区别;)@kleopatra-ah,好的。谢谢!
return selectedVolID;
selectedVolID();