我在处理拖动MouseEvent时遇到麻烦。 我希望单击矩形(已解决)或将鼠标拖动到矩形上时,可以切换矩形的颜色。
当鼠标拖动到单元格上方时,我想为每个toggle
(继承Cell
类)触发Rectangle
函数。
单元格的列包含在VBox
中,而这些列又位于主HBox
当我使用setOnMouseDragged
时,该事件仅针对单个单元格触发,而不是鼠标拖动的所有单元格。
private class Cell extends Rectangle {
private boolean isBlack = false;
private int x, y;
public Cell(int x, int y) {
super(CELL_SIZE, CELL_SIZE);
this.x = x;
this.y = y;
setFill(Color.WHITE);
setStroke(Color.BLACK);
setOnMouseClicked(e -> toggle());
setOnMouseEntered(e -> toggle()); // this should be replaced with correct event handling
}
public void toggle() {
isBlack = !isBlack;
rectangle.setFill(isBlack ? Color.BLACK : Color.WHITE);
}
}
@FXML
public void initialize() {
for (int x = 0; x < X_CELLS; ++x) {
VBox vBox = new VBox();
vBox.setAlignment(Pos.CENTER);
for (int y = 0; y < Y_CELLS; ++y) {
vBox.getChildren().add(new Cell(x, y));
}
hBox.getChildren().add(vBox);
}
}
FX app screenshot 目前,当鼠标悬停在单元格上时,它们会切换颜色,但我希望仅当鼠标悬停在单元格上时颜色才能更改。