2012-09-07 3 views

답변

13

table.getStylesheets().addAll(getClass().getResource("hidden-tableview-headers.css").toExternalForm()); 

파일 hidden-tableview-headers.css는 클래스 로딩하는 CSS 자원과 같은 위치에 배치하고 라인이 포함되어 있습니다 :

.column-header-background { visibility: hidden; -fx-padding: -1em; } 

visibility: hidden ATTRIB를 테이블에 사용자 정의 스타일 시트 ute는 JavaFX가 노드를 그리지 않지만 제목이 있던 곳에 공간을 남겨 둡니다. 헤더가 1 행의 텍스트 높이이므로, -fx-padding: -1em;을 설정하여 보이지 않는 헤더가 공백을 차지하지 않도록 할 수 있습니다.

+0

감사합니다 jewelsea,하지만 이것은 열 머리글 대신 빈 공간을 유지하고 그것을 제거하고 싶습니다. –

+0

제안 된 CSS에 -fx-padding 설정을 추가하여 익명의 stackoverflow 사용자가 권장하는대로 invile column header가 화면의 공간을 차지하지 않도록했습니다. – jewelsea

+0

@ jewelsea, 나는'-em-padding : -2em;'대신'-1em'을 사용하는 것을 제안했다. – Mansueli

5

솔루션은 매우 간단합니다. tableview 렌더링이 끝나면 테이블 헤더를 가져와 보이지 않게 할 수 있으므로 테이블 뷰 레이아웃이 변경 될 때 테이블 헤더를 다시 레이아웃 할 필요가 없습니다. 우리가 폭 속성 변경을 사용할 수 있습니다, 테이블 렌더링이 완료 잡기, 테이블 헤더 다음

를 숨기려면 코드입니다 : 당신은 당신이 수있는 추가 .css 파일을 추가하지 않으려면

tableView.widthProperty().addListener(new ChangeListener<Number>() { 
     @Override 
     public void changed(ObservableValue<? extends Number> ov, Number t, Number t1) { 
      // Get the table header 
      Pane header = (Pane)tableView.lookup("TableHeaderRow"); 
      if(header!=null && header.isVisible()) { 
       header.setMaxHeight(0); 
       header.setMinHeight(0); 
       header.setPrefHeight(0); 
       header.setVisible(false); 
       header.setManaged(false); 
      } 
     } 
    }); 
0

기존 CSS를 사용 :

table.getStyleClass().add("hide-header"); 
:

.hide-header .column-header-background { 
    visibility: hidden; -fx-padding: -1em; 
} 

.hide-header 당신이 당신의 자바 코드에 추가해야 임의의 이름입니다

관련 문제