简介
简单
code
/*
* @Author: your name
* @Date: 2020-11-05 10:21:52
* @LastEditTime: 2020-11-05 10:45:16
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /java/calcu/SliderFrame.java
*/
package calcu;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
public class SliderFrame extends JFrame {
private JPanel sliderPanel;
private JTextField textField;
private ChangeListener listener;
public static void main(String[] args) {
SliderFrame t = new SliderFrame();
t.setTitle("ImageTest");
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
t.setVisible(true);
}
public SliderFrame() {
sliderPanel = new JPanel();
sliderPanel.setLayout(new GridBagLayout());
// common listener for all sliders
listener = event -> {
JSlider source = (JSlider) event.getSource();
textField.setText("" + source.getValue());
};
// add a plain slider
JSlider slider = new JSlider();
addSlider(slider, "Plain");
// add a slider with major and minor ticks
slider = new JSlider();
slider.setPaintTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
addSlider(slider, "Ticks");
// add a slider with no track
slider = new JSlider();
slider.setPaintTicks(true);
slider.setSnapToTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
addSlider(slider, "Snap to ticks");
// add a slider with no track
slider = new JSlider();
slider.setPaintTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
slider.setPaintTicks(false);
addSlider(slider, "No track");
// add an inverted slider
slider = new JSlider();
slider.setPaintTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
slider.setInverted(true);
addSlider(slider, "Inverted");
// add a slider with numeric labels
slider = new JSlider();
slider.setPaintTicks(true);
slider.setPaintLabels(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
addSlider(slider, "Labels");
// add a slider with alphabetic labels
slider = new JSlider();
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setMajorTickSpacing(20);
slider.setMinorTickSpacing(5);
Dictionary labelTabel = new Hashtable<>();
labelTabel.put(0, new JLabel("A"));
labelTabel.put(20, new JLabel("B"));
labelTabel.put(40, new JLabel("C"));
labelTabel.put(60, new JLabel("D"));
labelTabel.put(80, new JLabel("E"));
labelTabel.put(100, new JLabel("F"));
slider.setLabelTable(labelTabel);
addSlider(slider, "Custon labels");
// add a slider with icon labels because of no icons don't to show these
// slider = new JSlider();
// slider.setPaintTicks(true);
// slider.setPaintLabels(true);
// slider.setSnapToTicks(true);
// slider.setMajorTickSpacing(20);
// slider.setMinorTickSpacing(5);
// add the text field that displays the slider value
textField = new JTextField();
add(sliderPanel, BorderLayout.CENTER);
add(textField, BorderLayout.SOUTH);
pack();
}
public void addSlider(JSlider s, String description) {
s.addChangeListener(listener);
JPanel panel = new JPanel();
panel.add(s);
panel.add(new JLabel(description));
panel.setAlignmentX(Component.LEFT_ALIGNMENT);
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridy = sliderPanel.getComponentCount();
gbc.anchor = GridBagConstraints.WEST;
sliderPanel.add(panel, gbc);
}
}