JAVA范例 十九) 多媒体与图像处理
a多媒体
实例349 测试音频播放器
实例350 测试视频播放器
实例352 实现一个录音机
实例353 建立一个调色板import java.awt.BorderLayout;import java.awt.Canvas;import java.awt.Color;import java.awt.Dimension;import java.awt.GridLayout;import javax.swing.BorderFactory;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JSlider;import javax.swing.SwingConstants;import javax.swing.border.TitledBorder;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;public class CPalette extends JFrame implements ChangeListener { private JPanel contendtPane; private BorderLayout borderLayout1 = new BorderLayout(); private JPanel jPanel1 = new JPanel(); private JPanel jPanel2 = new JPanel(); private GridLayout gridLayout1 = new GridLayout(); private JSlider redSlider = new JSlider();// 调节红色 private JSlider greenSlider = new JSlider();// 调节绿色 private JSlider blueSlider = new JSlider();// 调节蓝色 private JSlider alphaSlider = new JSlider();// 调节Alpha值 private TitledBorder titledBorder1; private TitledBorder titledBorder2; private TitledBorder titledBorder3; private TitledBorder titledBorder4; private JLabel jLabel = new JLabel(); ColorCanvas canvas = new ColorCanvas();// 创建ColorCanvas的实例 private BorderLayout borderLayout2 = new BorderLayout(); public void initial() throws Exception { contendtPane = (JPanel) this.getContentPane(); // 各个JSlider对象的标题边界 titledBorder1 = new TitledBorder(BorderFactory.createEtchedBorder( Color.white, new Color(142, 142, 142)), "Red"); titledBorder2 = new TitledBorder(BorderFactory.createEtchedBorder( Color.white, new Color(142, 142, 142)), "Green"); titledBorder3 = new TitledBorder(BorderFactory.createEtchedBorder( Color.white, new Color(142, 142, 142)), "Blue"); titledBorder4 = new TitledBorder(BorderFactory.createEtchedBorder( Color.white, new Color(142, 142, 142)), "Alpha"); contendtPane.setLayout(borderLayout1); this.setSize(new Dimension(401, 317)); this.setTitle("JColorDemo"); // jPanel2的布局结构设置 jPanel2.setLayout(gridLayout1); gridLayout1.setColumns(2); gridLayout1.setHgap(5); gridLayout1.setRows(2); gridLayout1.setVgap(5); // 设置各个JSlider对象的基本属性 redSlider.setMaximum(255);// 最大色彩值 redSlider.setPaintLabels(true);// 绘制标签 redSlider.setPaintTicks(true);// 绘制移动块 redSlider.setBorder(titledBorder1);// 设置边界 greenSlider.setMaximum(255); greenSlider.setPaintLabels(true); greenSlider.setPaintTicks(true); greenSlider.setBorder(titledBorder2); blueSlider.setMaximum(255); blueSlider.setPaintLabels(true); blueSlider.setPaintTicks(true); blueSlider.setBorder(titledBorder3); alphaSlider.setMaximum(255); alphaSlider.setPaintLabels(true); alphaSlider.setPaintTicks(true); alphaSlider.setBorder(titledBorder4); jLabel.setHorizontalAlignment(SwingConstants.CENTER); jLabel.setText("调色板程序演示"); jPanel1.setLayout(borderLayout2); contendtPane.add(jPanel1, BorderLayout.CENTER); contendtPane.add(jPanel2, BorderLayout.SOUTH); jPanel2.add(redSlider, null); jPanel2.add(greenSlider, null); jPanel2.add(blueSlider, null); jPanel2.add(alphaSlider, null); contendtPane.add(jLabel, BorderLayout.NORTH); // 添加各个JSlider对象的事件监听器 this.redSlider.addChangeListener(this); this.greenSlider.addChangeListener(this); this.blueSlider.addChangeListener(this); this.alphaSlider.addChangeListener(this); // jPanel1上添加canvas对象,用来显示当前的颜色 this.jPanel1.add(this.canvas); this.setVisible(true); } public void stateChanged(ChangeEvent e) { JSlider slider = (JSlider) e.getSource(); // 根据JSlider对象的改变后的值,改变canvas对象的各色彩值,并重新设置canvas的背景色 if (slider == this.redSlider) { this.canvas.redValue = slider.getValue(); this.canvas.setBackgroudnColor(); } else if (slider == this.greenSlider) { this.canvas.greenValue = slider.getValue(); this.canvas.setBackgroudnColor(); } else if (slider == this.blueSlider) { this.canvas.blueValue = slider.getValue(); this.canvas.setBackgroudnColor(); } else if (slider == this.alphaSlider) { this.canvas.alphaValue = slider.getValue(); this.canvas.setBackgroudnColor(); } // 更新canvas对象的背景色,显示颜色值改变后的颜色 this.canvas.repaint(); } public static void main(String args[]) throws Exception { new CPalette().initial(); }}class ColorCanvas extends Canvas { Color color;// 各颜色值形成的颜色 int redValue, greenValue, blueValue;// 各颜色值 int alphaValue = 255; public ColorCanvas() { this.color = new Color(0, 0, 0);// 初始颜色 this.setBackgroudnColor();// 设置初始的背景色 } // 该方法根据各颜色值,来设置canvas对象的背景色 public void setBackgroudnColor() { this.color = new Color(this.redValue, this.greenValue, this.blueValue, this.alphaValue); this.setBackground(this.color); }}