最近做一个能够调节范围的东西,类似 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);
}
}
一般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);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货