例如,当您单击按钮时,我想重现JavaFX modena主题默认具有的聚焦效果。以便将这种效果应用到获得形状的焦点上。
我不使用FXML和CSS,但如果更简单,我可以尝试一下。
答案 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();
}
结果(左无效果,右有效果)
DropShadow
效果也可以通过CSS来应用,请参见https://docs.oracle.com/javase/10/docs/api/javafx/scene/doc-files/cssref.html#typeeffect