带有colorpicker编辑器的JavaFX tableview

Jos*_*osé 6 java javafx-2

我有一个TableView,它使用ColorPicker来(显示/编辑)单元格中的颜色.该表在所需字段中显示ColorPicker,但编辑不起作用.

TableColumn<SeriesPreferences, Color> c2 = new TableColumn<SeriesPreferences, Color>("Color");
c2.setCellValueFactory(new PropertyValueFactory<SeriesPreferences, Color>("color"));
c2.setCellFactory(new Callback<TableColumn<SeriesPreferences, Color>,
                                TableCell<SeriesPreferences, Color>>()
    {
        @Override
        public TableCell<SeriesPreferences, Color> 
        call(final TableColumn<SeriesPreferences, Color> param)
        {
            TableCell<SeriesPreferences, Color> cell = 
                new TableCell<SeriesPreferences, Color>()
                    {
                        @Override
                        public void updateItem(Color c, boolean empty)
                        {
                            if(c != null)
                            {
                                final ColorPicker cp = new ColorPicker();
                                cp.setValue(c);
                                setGraphic(cp);
                                cp.setOnAction(new EventHandler<javafx.event.ActionEvent>()
                                    {
                                        public void 
                                        handle(javafx.event.ActionEvent t)
                                        {
                                            getTableView().edit(getTableRow().getIndex(), param);
                                            commitEdit(cp.getValue());
                                        }
                                    });
                            }
                        }
                    };
            return cell;
        }
    });

c2.setOnEditCommit(new EventHandler<CellEditEvent<SeriesPreferences, Color>>()
    {
        @Override
        public void handle(CellEditEvent<SeriesPreferences, Color> t)
        {
            ((SeriesPreferences) t.getTableView().getItems().get(t.getTablePosition().
                                                    getRow())).setColor(t.getNewValue());
        }
    });
Run Code Online (Sandbox Code Playgroud)

当我更改颜色选择器中的颜色时,没有调用编辑事件处理程序,任何想法?

Max*_*rch 1

好吧,我对这个话题进行了一些调查,因为我也遇到了同样的问题。我想说 JavaFX 根本无法使用。

我查看了其他人如何实现他们的单元格,关键是它们都使用了可以用字符串表示的东西。现在,Java 始终如此:按照 Java 的方式进行操作,否则就被独自留在雨中。目前 JavaFX 的文档非常糟糕,所以我必须尝试直到它起作用。

所以:要触发editCommit- 事件,您必须setContentDisplay(ContentDisplay. TEXT_ONLY)调用updateItem(). 如果想要将数据显示为字符串,那么效果很好,但在像这样的情况下完全失败,其中颜色选择器只完成这项工作。

或者,也可以手动触发事件。但是如何获得桌子位置呢?我不知道。