2014-10-06 2 views
-1

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) 

다음은 코드입니다. Label에서

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

모든 유용한 기능은 또한 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); 
       } 
      } 

난 당신이지고 있었다 예외를 얻는 이유 완전히 확실하지 않다; 하지만 코드를 단순화하고 더 "표준적인"것을 사용하는 것이 도움이 될 것입니다.

관련 문제