在JavaFX中,应该使用哪个MouseEvent以及如何处理它来覆盖矩形矩形?

时间:2019-06-15 06:39:36

标签: events javafx mouseevent

我在处理拖动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 目前,当鼠标悬停在单元格上时,它们会切换颜色,但我希望仅当鼠标悬停在单元格上时颜色才能更改。

0 个答案:

没有答案