package swing;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
public class SliderTest {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
SliderFrame frame = new SliderFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class SliderFrame extends JFrame {
public SliderFrame() {
this.setTitle("Slider Test");
this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
sliderPanel = new JPanel();
sliderPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
listener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent event) {
JSlider source = (JSlider) event.getSource();
textField.setText("" + source.getValue());
}
};
JSlider slider = new JSlider();//add a plain slider
addSlider(slider, "Plain");
slider = new JSlider();//add a slider with major and minor ticks
slider.setPaintTicks(true);//将标尺标记,显示出来
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
addSlider(slider, "Ticks");
slider = new JSlider();//add a slider that snaps to ticks
slider.setPaintTicks(true);
slider.setSnapToTicks(true);//自动移到最接近的标尺处
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
addSlider(slider, "Snap to ticks");
slider = new JSlider();//add a slider with no track
slider.setPaintTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
slider.setPaintTrack(false);//隐藏滑动的轨迹
addSlider(slider, "No track");
slider = new JSlider();//add an inverted slider
slider.setPaintTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
slider.setInverted(true);
addSlider(slider, "Inverted");
textField = new JTextField();
textField.setEditable(false);
this.add(sliderPanel, BorderLayout.CENTER);
this.add(textField, BorderLayout.SOUTH);
private void addSlider(JSlider slider, String description) {
slider.addChangeListener(listener);
JPanel panel = new JPanel();
panel.add(slider);
panel.add(new JLabel(description));
sliderPanel.add(panel);
}
public static final int DEFAULT_WIDTH = 350;
public static final int DEFAULT_HEIGHT = 450;
private JTextField textField;
private JPanel sliderPanel;
private ChangeListener listener;
}