【发布时间】:2016-05-11 19:24:33
【问题描述】:
我是 javafx 的新手。我想向 tableview 列添加一个组合框,它从对象的 ArrayList 中获取选项(项目可以与对象不同)。另一列一切正常(只有字符串值)。我试图找到解决方案,但没有任何效果。而不是 ArrayList 显示的组合框数组。
为了简单起见,下面的类代码不是真正的代码。数据将从数据库中获取。
import java.util.ArrayList;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import ru.content_analysis.data_classes.FullWorkProject;
/**
*for table of adding the texts - choosing variable vals before adding the text
* @author aryumin
*/
public class VarAndValuesForTable {
private final SimpleIntegerProperty varId;
private final SimpleStringProperty varName;
private final SimpleObjectProperty<ArrayList<String>> varValues;
public VarAndValuesForTable(int varId, String varName, ArrayList<String> varValues){
this.varId = new SimpleIntegerProperty(varId);
this.varName = new SimpleStringProperty(varName);
this.varValues = new SimpleObjectProperty(varValues);
}
public int getVarId(){
return this.varId.get();
}
public void setVarId(int varId){
this.varId.set(varId);
}
public String getVarName(){
return this.varName.get();
}
public void setVarName(String varName){
this.varName.set(varName);
}
public ArrayList<String> getVarValues(){
return this.varValues.get();
}
public void setVarValues(ArrayList<String> varValues){
this.varValues.set(varValues);
}
public static ArrayList<VarAndValuesForTable> getAllVarsNamesWithValues(FullWorkProject prj){
ArrayList<VarAndValuesForTable> allVarsWithVals = new ArrayList<VarAndValuesForTable>();
ArrayList<String> vals = new ArrayList<>();
vals.add("ff");
vals.add("kkk");
vals.add("yyy");
allVarsWithVals.add(new VarAndValuesForTable(1, "var 1", vals));
allVarsWithVals.add(new VarAndValuesForTable(2, "var 2", vals));
return allVarsWithVals;
}
}
这是控制器的部分:
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
ArrayList<VarAndValuesForTable> projectVarWithVals = VarAndValuesForTable.getAllVarsNamesWithValues(FullWorkProject.currentLoadedProject);
allVarsValsForTable = FXCollections.observableArrayList(projectVarWithVals);
projectVarNameColumn.setCellValueFactory(new PropertyValueFactory<VarAndValuesForTable, String>("varName"));
varValuesColumn.setCellValueFactory(new PropertyValueFactory<VarAndValuesForTable, String>("varValues"));
varValuesColumn.setCellFactory(ComboBoxTableCell.forTableColumn(allVarsValsForTable));
textVarsValsTable.setItems(allVarsValsForTable);
}
【问题讨论】:
-
欢迎来到 StackOverflow。虽然我可以找出问题出在哪里,但如果您能提供给我们Minimal, Complete, and Verifiable example,那就太好了。这使人们更容易调试并为您的问题提供解决方案。