java - 重现javaFX焦点效果

标签 java javafx

我想重现 JavaFX modena 主题默认具有的相同焦点效果,例如,当您单击按钮时。这是为了将此效果应用于获得焦点的形状。

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

最佳答案

在摩德纳,多个背景填充被组合起来以达到这种效果。由于显而易见的原因,这不适用于形状。 (形状没有背景属性,并且没有可用的填充,允许您在任意形状的每个可能点处更改与边缘正交的颜色。)

您可以使用 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

关于java - 重现javaFX焦点效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52311383/

相关文章:

java - 在堆(Java)上创建对象后是否调用对象的构造函数?

java - 跟踪行为 - Java MIDI

java - 滚动()和添加()

javafx - 如何使 Textarea 垂直滚动条始终处于事件状态?

javafx - Java FX 使用 fxml 文件创建自定义对话框。如何设置或从中获取结果?

java - 在javafx中使 Canvas 看起来像被点亮的

java - 如何在调试 View 中过滤动态生成的类?

java - J2ME Native Mp3 Player - 播放大于 1.5 MB 的 mp3 文件

java - 从 Stage 以外的地方获取散焦事件 - JavaFX

java - Scala + OpenJFX + OpenJDK