ListView 鼠标事件
鼠标悬空事件(每一个列表项)
listView.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
int position = 0;
@Override
public ListCell<String> call(ListView<String> param) {
Label label = new Label();
label.setFont(new Font(15));
ListCell<String> cell = new ListCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
return;
}
label.setText(item);
this.setGraphic(label);
}
};
cell.setPrefHeight(30);
cell.hoverProperty().addListener((observable, oldValue, newValue) -> {
if (newValue && !label.getText().equals("")) {
label.setFont(new Font(20));
position = param.getItems().indexOf(label.getText());
param.getFocusModel().focus(position);
label.setStyle("-fx-background-color: pink;");
cell.setStyle("-fx-background-color: green;");
} else {
label.setStyle("-fx-background-color: none;");
cell.setStyle("-fx-background-color: none;");
label.setFont(new Font(15));
}
});
return cell;
}
});
鼠标滚轮事件
listView.setOnScroll(event -> {
System.out.println("event.getDeltaX() = " + event.getDeltaX());
System.out.println("event.getDeltaY() = " + event.getDeltaY());
});
鼠标拖拽事件
listView.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
int position = 0;
@Override
public ListCell<String> call(ListView<String> param) {
Label label = new Label();
label.setFont(new Font(15));
ListCell<String> cell = new ListCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
return;
}
label.setText(item);
this.setGraphic(label);
}
};
cell.setPrefHeight(30);
cell.setOnDragDetected(event -> {
Dragboard dragboard = cell.startDragAndDrop(TransferMode.COPY_OR_MOVE);
ClipboardContent content = new ClipboardContent();
content.putString(data);
WritableImage writableImage = new WritableImage((int) cell.getWidth(), (int) cell.getHeight());
WritableImage snapshot = cell.snapshot(new SnapshotParameters(), writableImage);
dragboard.setDragView(snapshot);
dragboard.setContent(content);
});
cell.setOnDragEntered(event -> {
position = param.getItems().indexOf(label.getText());
param.getFocusModel().focus(position);
});
cell.setOnDragOver(event -> {
event.acceptTransferModes(TransferMode.COPY);
});
cell.setOnDragDropped(event -> {
Dragboard dragboard = event.getDragboard();
param.getItems().remove(dragboard.getString());
if (position == -1) {
param.getItems().add(dragboard.getString());
param.getSelectionModel().select(param.getItems().size() - 1);
} else {
param.getItems().add(position, dragboard.getString());
param.getSelectionModel().select(position);
}
});
return cell;
}
});