首页 > 解决方案 > 如何鼠标事件进入和退出窗格更改颜色标签java fxml控制器

问题描述

当鼠标按下并退出“paneKategori”时,我想更改标签“Kategori”的颜色(看图片)。我在 fxml 控制器中的代码

    @FXML
void btnProdukMouseEntered(javafx.scene.input.MouseEvent event) {
    if ( event.getSource() == paneKategori) {
        labelKategori.setStyle("-fx-background-color: #FF0000;");
    }

}

这对我不起作用。

这是我在场景构建器中的 GUI。 图形用户界面

标签: javajavafx

解决方案


为 和MOUSE_PRESSED处理程序创建处理程序。检查事件的位置是否在.MOUSE_DRAGGEDMOUSE_RELEASEDMOUSE_DRAGGED

例子

@Override
public void start(Stage primaryStage) throws Exception {
    Button button = new Button("Drag me");
    final String style = "-fx-background-color: red;";

    button.setOnMousePressed(evt -> {
        if (evt.isPrimaryButtonDown()) {
            button.setStyle(style);
        }
    });
    button.setOnMouseDragged(evt -> {
        if (evt.isPrimaryButtonDown()) {
            button.setStyle(button.contains(evt.getX(), evt.getY()) ? style : null);
        }
    });
    button.setOnMouseReleased(evt -> {
        button.setStyle(null);
    });

    Scene scene = new Scene(new StackPane(button), 300, 300);
    primaryStage.setScene(scene);
    primaryStage.show();
}

顺便说一句:在大多数情况下,在事件处理程序中检查源是不好的做法,因为您可以通过只为要比较source事件属性的节点注册事件处理程序来轻松避免检查。


推荐阅读