最近做一个能够调节范围的东西,类似 http://www.zapatec.com/website/main/products/slider/demo.jsp#zpslider/slider2.html 中的例子,但这个例子是网页中的,不是在Swing中实现的。
一般Swing的JSlider只有一个滑块,我的想法是把两个JSlider实例设置成透明叠加放在同一个位置,但这样做,虽然能够显示两个滑块,但只有一个滑块能够移动。
希望知道的朋友能够给出一个滑杆上有两个滑块的例子。
我的源代码如下:import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;public class DoubleSlider extends JFrame
{
    Box sliderBox = new Box(BoxLayout.Y_AXIS);    JTextField showVal = new JTextField();    ChangeListener listener;    /**
     * Launch the application
     * @param args
     */
    public static void main(String args[])
    {
        try
        {
            DoubleSlider frame = new DoubleSlider();
            frame.setVisible(true);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }    /**
     * Create the frame
     */
    public DoubleSlider()
    {
        super();
        setBounds(100, 100, 500, 375);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(null);
        init();
//        final JButton button = new JButton();
//        button.setText("New JButton");
//        button.setBounds(10, 304, 472, 29);
//        getContentPane().add(button);
    }
    
    public void init()
    {
        listener = new ChangeListener()
        {
            public void stateChanged(ChangeEvent event)
            {
                //取出滑动条的值,并在文本中显示出来  
                JSlider source = (JSlider) event.getSource();
                showVal.setText("当前滑动条的值为:" + source.getValue());
            }
        };
        
        JSlider slider1 = new JSlider();
        JSlider slider2 = new JSlider();
        addSlider(slider1, slider2, "普通滑动条");
        
//        add(sliderBox, BorderLayout.CENTER);
//        add(showVal, BorderLayout.SOUTH);
        showVal.setBounds(10, 304, 472, 29);
        add(showVal);
    }    public void addSlider(JSlider slider1, JSlider slider2, String description)
    {
        slider1.addChangeListener(listener);
        slider1.setBounds(10, 78, 472, 29);
        slider1.setValue(5);
        slider1.setPaintTrack(false);
        slider1.setOpaque(false);
        
        slider2.addChangeListener(listener);
        slider2.setBounds(10, 78, 472, 29);
        slider2.setValue(95);
//        slider2.setPaintTrack(false);
        slider2.setOpaque(false);
        
        add(slider1);
        add(slider2);
    }
}