为了账号安全,请及时绑定邮箱和手机立即绑定

绘制JSlider的滑块图标

绘制JSlider的滑块图标

慕标5832272 2019-08-13 16:50:15
绘制JSlider的滑块图标想要重新标记标记或拇指JSlider而不是标准灰色。我怎样才能做到这一点?
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

扩展了TrashGod非常有用的答案,我在几行代码中添加了一些代码,以便将条形图填充到移动它的位置。栏的其余部分将为空白:

执行此操作的代码是:

@Overridepublic void paintTrack(Graphics g) {

    // ... TrashGod's code ...

    // calculate how much of the progress bar to fill
    double percentage = (double)slider.getValue()/(double)slider.getMaximum();

    // fill the progress bar with a rectange of that size, (with curved corners of 4px diameter)
    g2d.fillRoundRect(t.x, t.y, (int)(t.width*percentage), t.height, 4, 4);

    // ...}

如果你想要一个背景颜色,在绘制第一个颜色之前绘制第二个rectange:

    // ... TrashGod's code ...

    // calculate how much of the progress bar to fill
    double percentage = (double)slider.getValue()/(double)slider.getMaximum();

    // PAINT THE BACKGROUND
    // create a gradient paint for the background
    p = new LinearGradientPaint(start, end, new float[] {0.4f,0.8f}, new Color[] {Color.gray.brighter(), Color.gray.brighter().brighter()});
    g2d.setPaint(p);
    g2d.fillRoundRect((int)(t.width*percentage), t.y, t.width - (int)(t.width*percentage), t.height, 4, 4);

    // PAINT THE FOREGROUND
    // create the gradient paint
    p = new LinearGradientPaint(start, end, fracs, colors);
    g2d.setPaint(p);

    // fill the progress bar with a rectange of that size, (with curved corners of 4px diameter)
    g2d.fillRoundRect(t.x, t.y, (int)(t.width*percentage), t.height, 4, 4);



查看完整回答
反对 回复 2019-08-13
  • 3 回答
  • 0 关注
  • 351 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信