新知识点:
* JSlider类有四个参数:第一个指明滑动条的放置方向;第二个和第三个指明滑动条的最小值和最大值;第四个指定滑动条的初值
* 滑动条个属性:
最大刻度、最小刻度、是否显示刻度线、是否显示刻度标签
* slider和Label对齐方式的设置
* 滑动条产生的是change event事件
* 滑动条的取值
* 颜色的设置
源程序
SlideColor.java
import javax.swing.JFrame;
public class SlideColor {
public static void main(String[] args) {
JFrame frame = new JFrame("SlideColor");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new SlideColorPanel());
frame.pack();
frame.setVisible(true);
}
}
SlideColorPanel.java
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class SlideColorPanel extends JPanel{
private JPanel controls, colorPanel;
private JSlider rSlider, gSlider, bSlider;
private JLabel rLabel, gLabel, bLabel;
public SlideColorPanel() {
rSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, 0); //构造一个滑动条
rSlider.setMajorTickSpacing(50); //设置最大刻度
rSlider.setMinorTickSpacing(10); //设置最小刻度
rSlider.setPaintTicks(true); //显示刻度线
rSlider.setPaintLabels(true); //显示大刻度的标签
rSlider.setAlignmentX(Component.LEFT_ALIGNMENT); //设置对齐方式左对齐
gSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
gSlider.setMajorTickSpacing(50);
gSlider.setMinorTickSpacing(10);
//gSlider.setPaintTicks(true);
gSlider.setPaintLabels(true);
gSlider.setAlignmentX(Component.LEFT_ALIGNMENT);
bSlider = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
bSlider.setMajorTickSpacing(50);
bSlider.setMinorTickSpacing(10);
bSlider.setPaintTicks(true);
//bSlider.setPaintLabels(true);
bSlider.setAlignmentX(Component.LEFT_ALIGNMENT);
SliderListener listener = new SliderListener(); //实例化监听器,以备添加
rSlider.addChangeListener(listener);
gSlider.addChangeListener(listener);
bSlider.addChangeListener(listener);
rLabel = new JLabel("Red: 0");
rLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
gLabel = new JLabel("Green: 0");
gLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
bLabel = new JLabel("Blue: 0");
bLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
controls = new JPanel(); //new 一个Panel盛放所有的标签和滑动条
BoxLayout layout = new BoxLayout(controls, BoxLayout.Y_AXIS);
controls.setLayout(layout);
controls.add(rLabel);
controls.add(rSlider);
controls.add(Box.createRigidArea(new Dimension(0, 20)));
controls.add(gLabel);
controls.add(gSlider);
controls.add(Box.createRigidArea(new Dimension(0, 20)));
controls.add(bLabel);
controls.add(bSlider);
colorPanel = new JPanel(); //new 一个Panel,作为颜色显示区域
colorPanel.setPreferredSize(new Dimension(100, 100));
colorPanel.setBackground(new Color(0, 0, 0));
add(controls);
add(colorPanel);
}
private class SliderListener implements ChangeListener {
private int red , green, blue;
public void stateChanged(ChangeEvent arg0) {
red = rSlider.getValue(); //颜色取值
green = gSlider.getValue();
blue = bSlider.getValue();
rLabel.setText("Red: " + red);
gLabel.setText("Green: " + green);
bLabel.setText("Blue: " + blue);
colorPanel.setBackground(new Color(red, green, blue)); //设背景色
}
}
}
显示: