Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
在JavaFX8中,当创建包含日期选择器作为单元格的单个TableView行时,即使在不存在的表行中也会呈现日期选择器_Java_Datepicker_Tableview_Javafx 8 - Fatal编程技术网

在JavaFX8中,当创建包含日期选择器作为单元格的单个TableView行时,即使在不存在的表行中也会呈现日期选择器

在JavaFX8中,当创建包含日期选择器作为单元格的单个TableView行时,即使在不存在的表行中也会呈现日期选择器,java,datepicker,tableview,javafx-8,Java,Datepicker,Tableview,Javafx 8,我有一个JavaFX8 GUI: 列“Expires”包含作为单元格的组件。如您所见,相关组件在所有可见行中呈现,即使它们尚未在表中创建 我的问题是:如何仅在创建的行中呈现DatePicker单元格 在发布这篇文章之前,我在谷歌上搜索了很多东西,但都没有用;我只是看不到任何相关的东西 我所谓的细胞工厂是: tableColumnExpirationDate.setCellFactory( new ExpirationDatePickerCellFactory(tableView.get

我有一个JavaFX8 GUI:

列“Expires”包含作为单元格的组件。如您所见,相关组件在所有可见行中呈现,即使它们尚未在表中创建

我的问题是:如何仅在创建的行中呈现DatePicker单元格

在发布这篇文章之前,我在谷歌上搜索了很多东西,但都没有用;我只是看不到任何相关的东西

我所谓的细胞工厂是:

tableColumnExpirationDate.setCellFactory(
    new ExpirationDatePickerCellFactory(tableView.getItems()));
在哪里

public类ExpirationDatePickerCellFactory
实现回调{
@凌驾
公共DatePickerCell调用(TableColumn列){
返回新的DatePickerCell(billList);
}
}
再说一次,在哪里


DatePickerCell
来自。

DatePickerCell的代码质量非常糟糕。例如,类有类型参数,但从未使用过,在构造函数中,未初始化的字段被检查为
null
。该类还允许您传递自己的
日期选择器
。但是,它准备类的方式是否与准备在构造函数中创建的实例的方式相同?不。它是否从旧的日期选择器中注销侦听器,以便可以安全地在其他地方重用它?不。Override
startEdit
只是为了调用super方法。要求每个约会挑肥拣瘦的人集中注意力…是的,这真是太可怕了。在我放弃跟踪错误之前,我只能阅读一些方法。只需滚动您自己的实现可能会更容易。@James\u够公平的了。在我的代码中,我没有做任何不寻常的事情,因此我认为在这里提问是有意义的,因为其他Java FX开发人员可能迟早会遇到这个问题。@coderodde我指的是博客文章中的代码,而不是您的代码(如果不清楚的话)。您可以尝试在
DatePickerCell
构造函数中省略对
setGraphic(…)
的调用,但该帖子中的许多代码都是胡说八道(因此,即使这样做可以修复它,我也建议不要使用它)。@James\u D删除
setGraphic
隐藏所有日期选择器,即使在现有行中也是如此。
public class ExpirationDatePickerCellFactory 
        implements Callback<TableColumn<Bill, Date>, 
                            TableCell<Bill, Date>> {
    @Override
    public DatePickerCell call(TableColumn<Bill, Date> column) {
        return new DatePickerCell(billList);
    }
}