2015-01-16 3 views
0

관련 추출물을 정렬하는 TableColumn의의 기본 값을 유지하지만 다른 뭔가를 표시FXML에서 목적을

@FXML 
TableColumn<TraceEvent, Long> eventTime; 

나는 속성으로 바인딩 그러한 :

public DefaultTraceTabView(final TraceTabUi ui) 
{ 
    this.ui = ui; 
    bindColumn(ui.eventTime, "nanoseconds"); 
    // other non relevant code 
} 

// 

private static <T> void bindColumn(final TableColumn<TraceEvent, T> column, 
    final String propertyName) 
{ 
    column.setCellValueFactory(new PropertyValueFactory<>(propertyName)); 
} 

좋아,이 작품; 난 칼럼을 정렬 할 수 있지만 디스플레이는 ... 글쎄 ... 나노초.

그리고 98343420 대신에 열에 표시하려는 내용은 98 ms, 343.420 μs입니다. 하지만 속성에 정의 된 정렬 순서를 유지하십시오 ...

어떻게 구현합니까? 자기에

+0

테이블 열 비교기를 설정하여 원하는대로 정렬 할 수 있습니다. http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TableColumnBase.html#comparatorProperty-- 문제가 있으면 이전 코드를 파헤겠습니다. – brian

+0

@brian 맞춤형 비교 프로그램이 필요하지 않습니다. 'Long'에 대한 내장 정렬은 잘 동작합니다. 내가하고 싶은 일은 "기본"값을 유지하면서 셀의 표시 텍스트를 모두 업데이트하는 것입니다. – fge

답변

0

대답 ...

this link에 해결책을 찾았

ui.eventTime.setCellFactory(param -> new TableCell<TraceEvent, Long>() 
    { 
     @Override 
     protected void updateItem(final Long item, final boolean empty) 
     { 
      super.updateItem(item, empty); 

      setText(empty ? null : nanosToText(item)); 
     } 
    }); 

nanosToText()는 그 이름이 말하는 않는 방법이다.

관련 문제