首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环JSlider?

循环JSlider?
EN

Stack Overflow用户
提问于 2011-03-14 19:41:54
回答 4查看 1.5K关注 0票数 2

默认情况下,JSlider采用直线形状。我们能不能把JSlider做成一个类似速度计的圆圈,或者是带读数的圆圈?

如果有人做过类似的事情...请分享代码...

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-15 02:35:34

JFreeChart有一个DialPlot,它可能会给你一些关于如何进行渲染的想法。

票数 2
EN

Stack Overflow用户

发布于 2011-03-14 20:27:47

没有默认的方法来做到这一点。然而,如果你正在创建一个自定义组件,听起来你想要的是某种可以抓取和调整的刻度盘,而不是一个圆圈状的滑块。

这将是一个自定义组件,将是一个中等但有趣的任务来创建。困难的部分是让它对用户来说看起来是可调整的,而不仅仅是显示一个值。在现实生活中,速度表是只读的。

票数 2
EN

Stack Overflow用户

发布于 2018-06-16 12:14:36

巧合的是,我只是需要在我自己的应用程序中使用这个,我通过了你的问题,这个问题对我没有真正的帮助,然后我就到了我看到人们使用Graphics2D的地步。

我真的一直认为Graphics g是一个100头的怪物,它想要杀死我的整个家庭,但我决定直面我的恐惧,得到一个可以做成三角形的代码,并设法把它做成一个圆圈。

这比我想象的要简单得多:

代码语言:javascript
复制
 public class CustomSlider extends JSlider{

 public CustomSlider(int begin, int end) {
     super(begin, end);
     setFont(new CustomFont(10));
     setPaintTrack(true);
    setUI(new BasicSliderUI(this) { 
        /*Sets the size of the Handler, should be the same as the OVAL size*/
        @Override
        protected Dimension getThumbSize() {
            return new Dimension(25,25);
        }

        /*Painting the THUMB as a OVAL in the x and y positions of thumbRect (The Handle)*/
        @Override
        public void paintThumb(Graphics g) {
            Graphics2D g2d = (Graphics2D) g;
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
            Rectangle t = thumbRect;
            g2d.setColor(Color.BLUE);
            g2d.fillOval(t.x, t.y, 25, 25);
        }
    });
    /* Set JLabels for specific Values*/
    Hashtable<Integer, JLabel> position = new Hashtable<Integer, JLabel>();
    position.put(0, new JLabel("HELP"));
    position.put(1, new JLabel("NORMAL"));
    position.put(2, new JLabel("CHAOS"));
    setLabelTable(position);
    setPaintLabels(true);
}

结果:https://i.stack.imgur.com/0OiKL.png (无法添加图像,缺乏信誉:( )如果你更喜欢MetalSliderUI的外观,请使用那个而不是BasicSliderUI。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5298075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档