当前位置: 首页 > 知识库问答 >
问题:

如何在JavaFX自定义progressbar中添加光晕效果

田马鲁
2023-03-14

我在JavaFX中创建了一个自定义进度条。现在我想在progressBar中添加光晕效果。

为此,我创建了一个具有高斯模糊效果的椭圆,并将椭圆的中心线添加到时间轴中,以便在进度栏中设置辉光效果的动画。

这是创建椭圆的代码

public Ellipse glowshape;
DropShadow glowEffect;
SimpleDoubleProperty width;

//create ellipse for gloweffect
public void createEllipse(){

    glowshape = new Ellipse(25, 20, 10, 15);
    glowshape.setFill(Color.rgb(255,255,255,.7));
    glowshape.setEffect(new GaussianBlur(5));
}


public void init(){
    indetermination();
    setStartAnimation();
    createEllipse();

    width = new SimpleDoubleProperty(0);
   width.bind(this.widthProperty());
   setGlowAnimation();
}

这是制作动画的方法

    public void setGlowAnimation(){

    KeyValue value = new KeyValue(glowshape.centerXProperty(),width.doubleValue(),Interpolator.EASE_OUT);

    KeyFrame keyframe1 = new KeyFrame(Duration.millis(2000),value);

    glow_timeline = new Timeline();
    glow_timeline.setCycleCount(Timeline.INDEFINITE);
    glow_timeline.setAutoReverse(true);
    glow_timeline.getKeyFrames().add(keyframe1);
}

虽然我已经将width属性与custom bar width属性绑定在一起,这样椭圆中心不会超过进度条的当前进度,并且应该反向。但当动画开始时,它不会发生,它只是移动了一定的距离,然后卡住了。我认为Keyvalue的目标值在动画方法中根本没有更新。

如果有人能在这件事上帮我,那就太好了。

共有1个答案

范宏大
2023-03-14

给你:

    //Create the ProgressBar
    ProgressBar progressBar = new ProgressBar();

    //Create a drop shadow effect
    DropShadow glowEffect= new DropShadow();
    glowEffect.setOffsetY(0f);
    glowEffect.setOffsetX(0f);
    glowEffect.setColor(Color.RED);
    glowEffect.setWidth(depth);
    glowEffect.setHeight(depth);

    progressBar.setEffect(glowEffect); //Apply the glowEffecteffect to the JavaFX ProgressBar

提到:

1) 要更改发光效果的宽度/高度可以修改设置宽度(…) 设置高度() 。提到方法setOffSetX(0) setOffSetY(0f) 用于将发光效果居中。

2) costum progressBar的过程与扩展节点类的过程相同。

此外,我添加此链接,以防您需要类似的东西:

 类似资料:
  • 添加/删除光晕是一组API,可以控制是否在3D地球周围显示 光晕 。 当使用addHalo() API添加光晕时,可以指定光晕颜色。默认设置下光晕是启用的。 controller.addHalo(0xFF0000); controller.removeHalo();

  • 问题内容: 我正在尝试在javaFX中创建自定义光标。这是我的代码: Windows 8.1的游标创建无效吗? 问题答案: 检出ImageCursor.getBestSize()方法和ImageCursor.getMaximumColors()并查看它们返回的内容,然后尝试匹配最佳大小和最大颜色的自定义光标图像。对于Windows 8.1,这很可能是32x32的光标。 这是来自javadoc 的引

  • 我创建了一个进度条,并更改了进度条的颜色。 是否可以像引导动画进度条那样向进度条添加动画? 这里是例子:链接在这里 事实上,我找到了一个解决办法,但这不是一个好办法。 css 我创建了12个css。并使用AnimationTimer循环这12个css。 比如: fxml

  • 我想创建一个自定义的矩形进度条与白色背景色。进度条中有一个文本居中,用于定义进度条的高度。还有另一个黑色背景色的视图,其宽度从左侧开始增长,具体取决于进度。我有这个,但不起作用: 编辑:好的,我有这个: 唯一的问题是:如何告诉LinearLayout与TextView一样高?

  • 我有一个自定义ProgressBar: 然而,它没有工作--后台任务正在执行,但ProgressBar没有显示。如何使用AsyncTask在活动顶部显示ProgressBar?

  • 是否有一个时间格式来指定这样的日期序列到轴在D3和v4?