2016-10-28 6 views
0

는 나는 방법을 선택 여러 열 또는 하나 개의 행을 찾았지만, 내가 원하는 모든 이미지선택 자바 FX

Excel exemple

같은 선택 번의 클릭 =입니다

A를 클릭하면 전체 열이 선택됩니다.

+1

할 수 있습니다 귀하의 테이블 뷰 객체와 열 개체, 그래서 나는 dataTypes 볼 수 있습니다. –

답변

0

TableColumnHeader의 이벤트 처리기를 바꿀 수 있습니다. 이 수신기에서 TableView의 선택 모델을 사용하여 전체 열을 선택할 수 있습니다. 당신이 추가로 선택하여 표시 열의 빈 셀을 원하는 경우에, 당신이 선택한 열의에 스타일 클래스를 추가 할 수 있습니다

private static final String selectedStyleClass = "selected"; 

@Override 
public void start(Stage primaryStage) { 
    TableView<Item<String>> tableView = createTable(); 

    // set selection mode to multi-cell-selection 
    tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); 
    tableView.getSelectionModel().setCellSelectionEnabled(true); 

    // make sure the table skin is created 
    Scene scene = new Scene(tableView); 
    tableView.applyCss(); 
    tableView.layout(); 

    // clear column selection on change of selected cells 
    tableView.getSelectionModel().getSelectedCells().addListener((Observable v) -> clearSelections(tableView)); 

    tableView.lookupAll("TableColumnHeader").stream().forEach(h -> { 
     final TableColumnHeader header = (TableColumnHeader) h; 
     header.setOnMouseReleased(evt -> { 
      evt.consume(); 

      // select the whole column 
      tableView.getSelectionModel().selectRange(0, header.getTableColumn(), tableView.getItems().size() - 1, header.getTableColumn()); 

      // add style class for styling empty cells in selected column 
      List<String> style = header.getTableColumn().getStyleClass(); 
      if (!style.contains(selectedStyleClass)) { 
       style.add(selectedStyleClass); 
      } 
     }); 
    }); 

    scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm()); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

private static void clearSelections(TableView<?> tableView) { 
    for (TableColumn column : tableView.getColumns()) { 
     column.getStyleClass().remove(selectedStyleClass); 
    } 
} 

있는 style.css

.table-view:focused .table-cell:empty.selected { 
    -fx-background: -fx-selection-bar; 
    -fx-table-cell-border-color: derive(-fx-selection-bar, 20%); 
} 

.table-view .table-cell:empty.selected { 
    -fx-background: -fx-selection-bar-non-focused; 
    -fx-table-cell-border-color: derive(-fx-selection-bar-non-focused, 20%); 
    -fx-background-color: -fx-table-cell-border-color, -fx-background; 
    -fx-background-insets: 0, 0 0 1 0; 
} 
+0

정말 고마워요. – zaki