有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java实现带值摆动可移动条

我想创建一个有值的条。如果我移动圆圈,那么字段中的值应该改变。我该怎么做? 这是屏幕截图。我怎样才能做到这一点

类似的东西也可以。请帮帮我。 提前感谢:)

enter image description here


共 (2) 个答案

  1. # 1 楼答案

    要在Java中创建带有值(滑块)的条,可以使用JSlider类。创建此类实例时,可以指定所有参数,如最小值和最大值、步长等

    您可以向滑块添加ChangeListener。这个Changelistener应该实现方法stateChanged(),在这个方法中,您可以根据滑块的位置更改文本框中显示的值

    JSlider slider= new JSlider(JSlider.HORIZONTAL,0,100,50); //min value 0, max value 100, initial value 50
    slider.addChangeListener(this)
    JTextFox text = new JTextFox("50");
    //Some other code, adding the the slider, text box (and other stuff) to the application
    //...
    
    public void stateChanged(ChangeEvent e)
    {
       JSlider source = (JSlider)e.getSource();
       int value = (int)source.getValue();
       text.setText(Integer.toString(value));
    }
    
  2. # 2 楼答案

    ^{}可能是一个有用的例子

    附录:下面是一个为JSpinner.NumberEditor使用合适格式字符串的示例

    附录:您可以通过覆盖paintTrack()来更改滑块的颜色,如here所示

    SpinSlider image

    import java.awt.EventQueue;
    import java.awt.FlowLayout;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JSlider;
    import javax.swing.JSpinner;
    import javax.swing.SpinnerNumberModel;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    
    /** @see https://stackoverflow.com/questions/6067898 */
    public class SpinSlider extends JPanel {
    
        public static void main(String args[]) {
            EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    JFrame f = new JFrame("SpinSlider!");
                    f.add(new SpinSlider());
                    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    f.pack();
                    f.setVisible(true);
                }
            });
        }
    
        public SpinSlider() {
            this.setLayout(new FlowLayout());
            final JSpinner spinner = new JSpinner();
            final JSlider slider = new JSlider();
            slider.addChangeListener(new ChangeListener() {
                @Override
                public void stateChanged(ChangeEvent e) {
                    JSlider s = (JSlider) e.getSource();
                    spinner.setValue(s.getValue());
                }
            });
            this.add(slider);
            spinner.setModel(new SpinnerNumberModel(50, 0, 100, 1));
            spinner.setEditor(new JSpinner.NumberEditor(spinner, "0'%'"));
            spinner.addChangeListener(new ChangeListener() {
                @Override
                public void stateChanged(ChangeEvent e) {
                    JSpinner s = (JSpinner) e.getSource();
                    slider.setValue((Integer) s.getValue());
                }
            });
            this.add(spinner);
        }
    }