사용자가 TableView에서 행을 선택하고 복사하도록 허용 할 수 있습니까?클립 보드에 JavaFX TableView 복사
6
A
답변
0
잘 모르겠지만 javafx.scene.input.Clipboard가 도움이 될 것 같습니다.
9
tableView.getSelectionModel().setCellSelectionEnabled(true);
tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
MenuItem item = new MenuItem("Copy");
item.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
ObservableList<TablePosition> posList = tableView.getSelectionModel().getSelectedCells();
int old_r = -1;
StringBuilder clipboardString = new StringBuilder();
for (TablePosition p : posList) {
int r = p.getRow();
int c = p.getColumn();
Object cell = tableView.getColumns().get(c).getCellData(r);
if (cell == null)
cell = "";
if (old_r == r)
clipboardString.append('\t');
else if (old_r != -1)
clipboardString.append('\n');
clipboardString.append(cell);
old_r = r;
}
final ClipboardContent content = new ClipboardContent();
content.putString(clipboardString.toString());
Clipboard.getSystemClipboard().setContent(content);
}
});
ContextMenu menu = new ContextMenu();
menu.getItems().add(item);
tableView.setContextMenu(menu);
3
TableView tableView = new TableView();
tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
MenuItem item = new MenuItem("Copy");
item.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
ObservableList rowList = (ObservableList) tableView.getSelectionModel().getSelectedItems();
StringBuilder clipboardString = new StringBuilder();
for (Iterator it = rowList.iterator(); it.hasNext();) {
ObservableList<Object> row = (ObservableList<Object>) it.next();
for (Object cell : row) {
if (cell == null) {
cell = "";
}
clipboardString.append(cell);
clipboardString.append('\t');
}
clipboardString.append('\n');
}
final ClipboardContent content = new ClipboardContent();
content.putString(clipboardString.toString());
Clipboard.getSystemClipboard().setContent(content);
}
});
ContextMenu menu = new ContextMenu();
menu.getItems().add(item);
tableView.setContextMenu(menu);
}
를 다음과 같이 간다, 나는 그것이 나를 위해 컴파일되지 않습니다, Yelliver의 답변을 구현하지 수 있지만, 나는있는 TableView의 여러 선택한 데이터를 클립 보드에 추출하는 또 다른 아주 명확한 방법을 발견
도움이 될 수 있기를 바랍니다. TableView의 데이터를 편리하게 복사하려고합니다.
1
yelliver의 솔루션은 선택된 셀의 내용 만 복사하지만 분명히 명시 적으로 클릭 된 셀만 선택 대상으로 간주됩니다. Roberto의 솔루션은 테이블에있는 객체가 반복 가능한 경우에만 작동합니다. 여기서 복사 선택한 모든 행의 모든 셀의 데이터는 일반적인 해결책 :
@SuppressWarnings("rawtypes")
public void copySelectionToClipboard(final TableView<?> table) {
final Set<Integer> rows = new TreeSet<>();
for (final TablePosition tablePosition : table.getSelectionModel().getSelectedCells()) {
rows.add(tablePosition.getRow());
}
final StringBuilder strb = new StringBuilder();
boolean firstRow = true;
for (final Integer row : rows) {
if (!firstRow) {
strb.append('\n');
}
firstRow = false;
boolean firstCol = true;
for (final TableColumn<?, ?> column : table.getColumns()) {
if (!firstCol) {
strb.append('\t');
}
firstCol = false;
final Object cellData = column.getCellData(row);
strb.append(cellData == null ? "" : cellData.toString());
}
}
final ClipboardContent clipboardContent = new ClipboardContent();
clipboardContent.putString(strb.toString());
Clipboard.getSystemClipboard().setContent(clipboardContent);
}
Ctrl + C와 복사를 활성화하기
final KeyCodeCombination keyCodeCopy = new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_ANY);
table.setOnKeyPressed(event -> {
if (keyCodeCopy.match(event)) {
copySelectionToClipboard(table);
}
});
를 추가
관련 문제
- 1. BufferedImage를 클립 보드에 복사
- 2. 클립 보드에 그림 복사
- 3. 클립 보드에 속성 복사
- 4. javascript로 이미지를 클립 보드에 복사
- 5. 클립 보드에 버튼 레이블 복사
- 6. Elisp : 버퍼를 클립 보드에 복사
- 7. System.Windows.Forms.Clipboard없이 클립 보드에 복사 하시겠습니까?
- 8. iPhone iWebKit 클립 보드에 복사
- 9. LightSwitch 문자열을 클립 보드에 복사
- 10. Eclipse : 클립 보드에 자동 복사 선택
- 11. PyGTK : 클립 보드에 matplotlib 그림 복사
- 12. 자동으로 웹 페이지를 클립 보드에 복사
- 13. ZeroClipboard를 사용하여 URL을 클립 보드에 복사
- 14. 선택한 영역의 텍스트를 클립 보드에 복사
- 15. Android : API의 클립 보드에 텍스트 복사 <
- 16. 장식 된 이미지를 클립 보드에 복사
- 17. Jquery - div 내용을 클립 보드에 복사
- 18. 클립 보드 대시 보드에 복사 버튼
- 19. Adobe Air - 이미지를 클립 보드에 복사
- 20. 모바일에서도 작동하는 클립 보드에 복사 하시겠습니까?
- 21. 데이터를 잘라내는 클립 보드에 Excel 복사
- 22. 클립 보드에 복사 된 파일이 이미지인지 확인합니다.
- 23. Safari, JavaScript 및 시스템 클립 보드에 복사
- 24. 페이지의 HTML 스 니펫을 클립 보드에 복사
- 25. 명령 줄에서 클립 보드에 이미지 복사
- 26. JavaScript/jquery를 사용하여 클립 보드에 이미지 복사
- 27. VS2008 두 번 클릭하여 클립 보드에 복사
- 28. 클립 보드에 자바 스크립트
- 29. 캡션을로드하고 클립 보드에 링크하기
- 30. QT를 통해 클립 보드에 (rtf) 테이블 복사 (또는 : 클립 보드에 QTextDocument 쓰기)