Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Can';t将组合框添加到TabeView JavaFx_Javafx_Combobox_Tableview - Fatal编程技术网

Can';t将组合框添加到TabeView JavaFx

Can';t将组合框添加到TabeView JavaFx,javafx,combobox,tableview,Javafx,Combobox,Tableview,我是javafx新手。我想在tableview列中添加一个组合框,它从对象的ArrayList中获取选项(项目可以根据对象的不同而不同)。使用另一列(只有字符串值)一切正常。我试图找到解决办法,但没有任何效果。而不是ArrayList显示的组合框数组。 为了简单起见,下面的类代码不是真正的代码。数据将从数据库中获取 import java.util.ArrayList; import javafx.beans.property.SimpleIntegerProperty; import

我是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;
    }
}
import java.util.ArrayList;
导入javafx.beans.property.SimpleIntegerProperty;
导入javafx.beans.property.SimpleObject属性;
导入javafx.beans.property.SimpleStringProperty;
导入ru.content\u analysis.data\u classes.FullWorkProject;
/**
*对于添加文本的表格-在添加文本之前选择变量VAL
*@作者aryumin
*/
公共类变量和值可移植{
私有最终单一产权;
私有最终SimpleStringProperty varName;
私有最终SimpleObjectProperty变量值;
public varandvalues可移植(int-varId、String-varName、ArrayList-varValues){
this.varId=新的SimpleIntegerProperty(varId);
this.varName=新的SimpleStringProperty(varName);
this.varValues=新的SimpleObject属性(varValues);
}
public int getVarId(){
返回此.varId.get();
}
公共无效设置变量(整数变量){
本变量集(变量);
}
公共字符串getVarName(){
返回此.varName.get();
}
public void setVarName(字符串varName){
this.varName.set(varName);
}
公共ArrayList getVarValues(){
返回此.varValues.get();
}
公共void setVarValues(ArrayList varValues){
this.varValues.set(varValues);
}
公共静态数组列表GetAllVarsNameWithValues(FullWorkProject prj){
ArrayList allVarsWithVals=新的ArrayList();
ArrayList VAL=新的ArrayList();
VAL.添加(“ff”);
VAL.添加(“kkk”);
VAL.add(“yyy”);
添加(新的VarAndValuesForTable(1,“var 1”,VAL));
添加(新的VarAndValuesForTable(2,“var 2”,VAL));
返回所有varswithvals;
}
}
以下是控制器的部分:

@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);

}  
@覆盖
公共void初始化(URL、ResourceBundle rb){
//待办事项
ArrayList projectVarWithVals=VarandValuesToTable.GetAllVarsNameWithValues(FullWorkProject.currentLoadedProject);
allVarsValsForTable=FXCollections.observearraylist(projectVarWithVals);
projectVarNameColumn.setCellValueFactory(新的PropertyValueFactory(“varName”));
varValuesColumn.setCellValueFactory(新属性ValueFactory(“varValues”));
varValuesColumn.setCellFactory(ComboBoxTableCell.forTableColumn(allVarsValsForTable));
text varsvalstable.setItems(allVarsValsForTable);
}  

您的问题是此列属性的类型错误。
组合框是编辑方法。属性的值(因此也是列)必须是基础类型。如果需要多个
字符串
值,则应将
属性
作为属性


还请注意,数据模型(
VarAndValuesForTable
在您的情况下)不需要保存组合框的可能值-它们在
comboxTableCell\forTableColumn
中明确给出。如果不同行需要不同的可能值,则必须创建自己的
comboxTableCell
,并用相关值填充每个行

那是你的错。你能提供一些链接来理解这个描述吗?对我来说,仍然很难欢迎StackOverflow。虽然我能找出问题出在哪里,但如果你能给我们提供一个解决方案,那就太好了。这使人们更容易调试并为您的问题提供解决方案。