java.lang.IllegalArgumentException:参数类型不匹配javafx

java.lang.IllegalArgumentException:参数类型不匹配javafx,java,javafx-2,Java,Javafx 2,我正在尝试将工具提示ui控件添加到TableView的TableColumn中。 我得到以下例外。请帮忙 SEVERE: Failed to load skin 'com.sun.javafx.scene.control.skin.TooltipSkin' for control Label[id=null, styleClass=tooltip]'123' java.lang.IllegalArgumentException: argument type mismatch at

我正在尝试将工具提示ui控件添加到TableView的TableColumn中。 我得到以下例外。请帮忙

SEVERE: Failed to load skin 'com.sun.javafx.scene.control.skin.TooltipSkin' for control Label[id=null, styleClass=tooltip]'123'
java.lang.IllegalArgumentException: argument type mismatch
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
下面是代码

TableColumn<HomeDraftRequestModel, Long> revenueColId = (TableColumn) getReqForMyActionTableView()
            .getColumns().get(8);

    revenueColId.setCellFactory(new Callback<TableColumn<HomeDraftRequestModel, Long>, TableCell<HomeDraftRequestModel, Long>>() {
        @Override
        public TableCell<HomeDraftRequestModel, Long> call(
                TableColumn<HomeDraftRequestModel, Long> param) {
            Label label = new Label();

            return new TableCell<HomeDraftRequestModel, Long>() {
                @Override
                protected void updateItem(Long item, boolean empty) {
                    super.updateItem(item, empty);
                    if (empty) {
                        setGraphic(null);
                    } else {
                        label.setText(item + "");
                        Tooltip toopTip = new Tooltip(item + "");
                        Tooltip.install(label, toopTip);
                        label.setUnderline(true);
                        label.setCursor(Cursor.HAND);
                        label.setOnMouseEntered(new EventHandler<MouseEvent>() {
                            @Override
                            public void handle(MouseEvent arg0) {
                                label.setTooltip(toopTip);
                            }
                        });
                        setGraphic(label);
                    }
                }

            };
        }
    });
TableColumn revenueColId=(TableColumn)getReqForMyActionTableView()
.getColumns().get(8);
revenueColId.setCellFactory(新回调(){
@凌驾
公用电话(
表(列参数){
标签=新标签();
返回新的TableCell(){
@凌驾
受保护的void updateItem(长项,布尔值为空){
super.updateItem(项,空);
if(空){
设置图形(空);
}否则{
label.setText(项+“”);
工具提示toopTip=新工具提示(项+“”);
工具提示。安装(标签,toopTip);
label.setUnderline(true);
label.setCursor(Cursor.HAND);
label.setonmouseintered(新的EventHandler(){
@凌驾
公共无效句柄(MouseEvent arg0){
label.setTooltip(toopTip);
}
});
设置图形(标签);
}
}
};
}
});

标签中所有有用的功能也直接定义在
表格单元格中(它们都是标签的
的子类)。因此,您可以去掉标签,直接在
TableCell
上调用方法。您也不需要鼠标侦听器:工具提示知道何时显示自己。只需调用
setTooltip(…)
即可启用它

以下方面应起作用:

            protected void updateItem(Long item, boolean empty) {
                super.updateItem(item, empty);
                if (empty) {
                    setText(null);
                    setTooltip(null);
                } else {
                    setText(item + "");
                    Tooltip toolTip = new Tooltip(item + "");
                    setUnderline(true);
                    setCursor(Cursor.HAND);
                    setTooltip(toolTip);
                }
            }
我不完全清楚你为什么会得到这样的例外;但它应该有助于简化代码并使用更“标准”的东西