18.带刻度的滚动条
效果:

package com.lvshitech.gui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class JSliderDemo extends JFrame implements ChangeListener {
JLabel l1;
int v1, v2;
JSlider sl1, sl2;
public static void main(String[] args) {
new JSliderDemo();
}
public JSliderDemo() {
super("使用JSlider");
Container container = getContentPane();
container.setBackground(Color.white);
// 创建垂直滚动条
sl1 = new JSlider(JSlider.VERTICAL, 100, 200, 100);
sl1.setMajorTickSpacing(50); // 设置大刻度间隔
sl1.setMinorTickSpacing(10); // 设置小刻度间隔
sl1.setPaintTicks(true); // 显示刻度
sl1.setPaintLabels(true); // 显示标注
sl1.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
sl1.addChangeListener(this); // 注册监听器
// 创建水平滚动条
sl2 = new JSlider();
sl2.setBorder(BorderFactory.createTitledBorder("JSlider(具有带标题的边框、刻度和标注)"));
sl2.setMajorTickSpacing(20);
sl2.setMinorTickSpacing(5);
sl2.setPaintTicks(true);
sl2.setPaintLabels(true);
sl2.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
sl2.addChangeListener(this);
// 标签
v1 = 100;
v2 = 50;
l1 = new JLabel("垂直滚动条的值为:" + v1 + ",水平滚动条的值为:" + v2);
l1.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
// 添加到容器
container.add(sl1, BorderLayout.WEST);
container.add(sl2, BorderLayout.SOUTH);
container.add(l1, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
// 改变滚动条的值时触发
@Override
public void stateChanged(ChangeEvent e) {
if (e.getSource() == sl1) {
v1 = ((JSlider)e.getSource()).getValue();
}
if (e.getSource() == sl2) {
v2 = ((JSlider)e.getSource()).getValue();
}
l1.setText("垂直滚动条的值为:" + v1 + ",水平滚动条的值为:" + v2);
}
}

浙公网安备 33010602011771号