TableView как выделять ячейку а не всю строку

154
05 ноября 2019, 18:00

Как в JavaFX TableView щелкая по ячейке выделять отдельно каждую ячейку, а не всю строку. В дальнейшем я бы хотел реализовать копирование содержимого ячейки. Программку пишу отсюда https://metanit.com/java/javafx/4.13.php, ошибок нет, все ок. Просто не знаю как, и можно ли реализовать такое в принципе.

Answer 1
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.scene.Scene;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TablePosition;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        TableView<String[]> tableView = new TableView<>(FXCollections.observableArrayList(
                new String[]{"1", "2", "3"},
                new String[]{"4", "5", "6"},
                new String[]{"7", "8", "9"}
        ));
        // возможность выделять конкретную ячейку (без этого выделяются строки)
        tableView.getSelectionModel().setCellSelectionEnabled(true);
        // возможность выделять несколько ячеек через SHIFT/CTRL (либо несколько строк соответственно)
        // без этого можно выделить только одну ячейку
        tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
        // слушатель для реализации реакции на выделение ячеек
        tableView.getSelectionModel().getSelectedCells().addListener(this::selectCells);
        TableColumn<String[], String> tc1 = new TableColumn<>("Column 1");
        tc1.setCellValueFactory(param -> new SimpleStringProperty(param.getValue()[0]));
        TableColumn<String[], String> tc2 = new TableColumn<>("Column 2");
        tc2.setCellValueFactory(param -> new SimpleStringProperty(param.getValue()[1]));
        TableColumn<String[], String> tc3 = new TableColumn<>("Column 3");
        tc3.setCellValueFactory(param -> new SimpleStringProperty(param.getValue()[2]));
        tableView.getColumns().addAll(tc1, tc2, tc3);
        primaryStage.setScene(new Scene(tableView));
        primaryStage.show();
    }
    // реакция на выделение ячеек
    private void selectCells(ListChangeListener.Change<? extends TablePosition> c) {
        c.getList().forEach(System.out::println);
    }
    public static void main(String[] args) {
        launch(Main.class, args);
    }
}
READ ALSO
Проблемы с кодировкой (Spring-MVC PDF)

Проблемы с кодировкой (Spring-MVC PDF)

Нужно было вывести PDF файл в Spring MVCСейчас при выводе кириллица не отображается,просто исчезает а цифры остаются

114
Как настроить notepad++ для компиляции кода java

Как настроить notepad++ для компиляции кода java

Решил покодить по хардкору использовав обычный текстовый редактор, но возникла загвоздка в его настройке, кто может описать шаги для настройки...

149
Изменение цвета svg изображения по маске, загруженного в HTML с помощью &lt;img&gt;

Изменение цвета svg изображения по маске, загруженного в HTML с помощью <img>

Пытаюсь обтравить прямоугольник по маске SVGпроблема в том, что высота прямоугольника динамическая (от 0px до 32px), а SVG-изображение подгружается...

135