JavaFX-使用XML中的数据填充FXML TableView
我试图用XML中的数据填充JavaFX中的TableView。基本上,我正在解析来自XML的数据&试图用来自XML的数据设置tableview。 然而,我在我提出的代码中遇到了一些问题。下面是我的XML文件的格式 XML文件JavaFX-使用XML中的数据填充FXML TableView,java,xml,javafx,Java,Xml,Javafx,我试图用XML中的数据填充JavaFX中的TableView。基本上,我正在解析来自XML的数据&试图用来自XML的数据设置tableview。 然而,我在我提出的代码中遇到了一些问题。下面是我的XML文件的格式 XML文件 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <Root> <xpression> <Environment> <ProjectName>AB
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Root>
<xpression>
<Environment>
<ProjectName>ABC</ProjectName>
<EnvironmentName>ABC Server</EnvironmentName>
<ServerURL>abcc.com:8080</ServerURL>
<SetDefault>Yes</SetDefault>
</Environment>
<Environment>
<ProjectName>XYZ</ProjectName>
<EnvironmentName>XYZ Server</EnvironmentName>
<ServerURL>xyz.com:8080</ServerURL>
<SetDefault>No</SetDefault>
</Environment>
</xpression>
</Root>
基本上,当我试图在parseXML()中设置表数据时,它正在设置TableView中XML文件中环境标记的第二个实例的值,跳过第一个实例。请参见下面的屏幕截图:
我尝试了各种各样的方法,但都不管用。有人能指出错误或者给出用XML值填充JavaFX TableView的解决方案吗?您需要在
for
循环中创建数据源
的新实例,否则您将总是将相同的引用添加到可观察列表
这样做:
public class DataSource {
public SimpleIntegerProperty serialNo = new SimpleIntegerProperty();
public SimpleStringProperty projectName = new SimpleStringProperty("");
public SimpleStringProperty environment = new SimpleStringProperty("");
public SimpleStringProperty serverURL = new SimpleStringProperty("");
public SimpleStringProperty defaultValue = new SimpleStringProperty("");
public DataSource(){
this(1,"","","","");
}
public DataSource(int serial, String projectName,String envName, String serverURL, String defaultValue){
setSerialNo(serial);
setEnvironment(envName);
setProjectName(projectName);
setServerURL(serverURL);
setDefaultValue(defaultValue);
}
public Integer getSerialNo(){
return serialNo.get();
}
public void setSerialNo(Integer serialNum){
serialNo.set(serialNum);
}
public String getProjectName(){
return projectName.get();
}
public void setProjectName(String prjName){
projectName.set(prjName);
}
public String getEnvironment(){
return environment.get();
}
public void setEnvironment(String envName){
environment.set(envName);
}
public String getServerURL(){
return serverURL.get();
}
public void setServerURL(String serverUrl){
serverURL.set(serverUrl);
}
public String getDefaultValue(){
return defaultValue.get();
}
public void setDefaultValue(String defaultInd){
defaultValue.set(defaultInd);
}
}
for(int i = 0; i < nList.getLength(); i++){
DataSource ds = new DataSource();
DataSource ds = new DataSource();
...
for(int i = 0; i < nList.getLength(); i++){
for(int i=0;i
而不是:
public class DataSource {
public SimpleIntegerProperty serialNo = new SimpleIntegerProperty();
public SimpleStringProperty projectName = new SimpleStringProperty("");
public SimpleStringProperty environment = new SimpleStringProperty("");
public SimpleStringProperty serverURL = new SimpleStringProperty("");
public SimpleStringProperty defaultValue = new SimpleStringProperty("");
public DataSource(){
this(1,"","","","");
}
public DataSource(int serial, String projectName,String envName, String serverURL, String defaultValue){
setSerialNo(serial);
setEnvironment(envName);
setProjectName(projectName);
setServerURL(serverURL);
setDefaultValue(defaultValue);
}
public Integer getSerialNo(){
return serialNo.get();
}
public void setSerialNo(Integer serialNum){
serialNo.set(serialNum);
}
public String getProjectName(){
return projectName.get();
}
public void setProjectName(String prjName){
projectName.set(prjName);
}
public String getEnvironment(){
return environment.get();
}
public void setEnvironment(String envName){
environment.set(envName);
}
public String getServerURL(){
return serverURL.get();
}
public void setServerURL(String serverUrl){
serverURL.set(serverUrl);
}
public String getDefaultValue(){
return defaultValue.get();
}
public void setDefaultValue(String defaultInd){
defaultValue.set(defaultInd);
}
}
for(int i = 0; i < nList.getLength(); i++){
DataSource ds = new DataSource();
DataSource ds = new DataSource();
...
for(int i = 0; i < nList.getLength(); i++){
DataSource ds=newdatasource();
...
对于(int i=0;i
非常感谢@NicolasFilotto。解决方案真的很有效。感谢您指出这一变化。