重现javaFX焦点效果

时间:2018-09-13 10:04:51

标签: java javafx

例如,当您单击按钮时,我想重现JavaFX modena主题默认具有的聚焦效果。以便将这种效果应用到获得形状的焦点上。

我不使用FXML和CSS,但如果更简单,我可以尝试一下。

1 个答案:

答案 0 :(得分:2)

在现代中,将多个背景填充进行组合以实现此效果。出于明显的原因,这不适用于形状。 (Shape没有背景属性,并且没有可用的填充,可以让您在任意形状的每个可能点处更改与边缘垂直的颜色。)

您可以使用DropShadow效果来获得类似于控件焦点外观的外观:

@Override
public void start(Stage primaryStage) {
    Circle circle = new Circle(100, null);
    circle.setStrokeWidth(5);
    circle.setStroke(Color.BLACK);
    Effect effect = new DropShadow(BlurType.GAUSSIAN, Color.DODGERBLUE, 5, 0.75, 0, 0);

    Scene scene = new Scene(new StackPane(circle), 250, 250);
    scene.setOnMouseClicked(evt -> circle.setEffect(circle.getEffect() == null ? effect : null));
    primaryStage.setScene(scene);
    primaryStage.show();
}

结果(左无效果,右有效果)

result screenshot

DropShadow效果也可以通过CSS来应用,请参见https://docs.oracle.com/javase/10/docs/api/javafx/scene/doc-files/cssref.html#typeeffect