2014-10-06 106 views
-1

我正在嘗試將ToolTip ui控件添加到TableView的TableColumn。 我收到以下異常。請幫忙。java.lang.IllegalArgumentException:參數類型不匹配javafx

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

      }; 
     } 
    }); 

回答

0

所有在Label的有用的功能也以TableCell(它們是兩個Labeled子類)直接定義。所以你可以擺脫標籤,直接在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); 
       } 
      } 

我不完全知道爲什麼你讓你越來越除外;但它應該有助於簡化代碼並使用更「標準」的東西。

相關問題