Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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
使用FX对象的JavaFX TableView_Java_Uitableview_User Interface_Javafx_Tableview - Fatal编程技术网

使用FX对象的JavaFX TableView

使用FX对象的JavaFX TableView,java,uitableview,user-interface,javafx,tableview,Java,Uitableview,User Interface,Javafx,Tableview,我试图在我的TableView中放置一个堆栈面板,但不断出现错误 我怀疑这是因为我对创建细胞价值工厂缺乏了解 我的代码如下所示: TableColumn obj = new TableColumn("Func " + i); final int index = i; obj.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList<String>

我试图在我的
TableView
中放置一个堆栈面板,但不断出现错误

我怀疑这是因为我对创建细胞价值工厂缺乏了解

我的代码如下所示:

TableColumn obj = new TableColumn("Func " + i);
        final int index = i;
        obj.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList<String>, String>, TableCell<ObservableList<String>, String>>() {



            @Override
            public TableCell<ObservableList<String>, String> call(final CellDataFeatures<ObservableList<String>, String> cdf) {
                if (index + 2 >= cdf.getValue().size()) {
                    return null;
                }
                //return new SimpleStringProperty(cdf.getValue().get(index + 2));
                return new TableCell<ObservableList<String>, String>(){
                    Label funcLbl = new Label(cdf.getValue().get(index+2));
                    StackPane sp = new StackPane();


                    @Override
                    protected void updateItem(String item, boolean empty) {
                        super.updateItem(item, empty); //To change body of generated methods, choose Tools | Templates.
                        sp.getChildren().add(funcLbl);
                        setGraphic(sp);
                    }
                };
            }
        });
        obj.setMinWidth(100);
        this.getColumns().add(obj);
我正在尝试从使用

public ObservableValue<String> call(CellDataFeatures<ObservableList<String>, String> cdf) 
公共observeValue调用(CellDataFeatures cdf)
并且仅返回
SimpleStringProperty
以返回一个
StackPane
作为其内容的
表格单元格,其
字符串保存在
标签中(我想基于单击堆栈窗格创建操作)


任何关于理解过渡的帮助都将是巨大的

CellValueFactory用于从模型对象填充列单元格中的数据

例如:

lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));
lastNameCol.setCellValueFactory(新的PropertyValueFactory(“lastName”);

如果要在表列的所有单元格中呈现数据,则必须使用cellFactory

我在回答中也做了类似的操作
lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));