- 浏览: 123483 次
- 性别:
- 来自: 佛山
文章分类
最新评论
-
zgw06629:
多谢提供的安装包
MyEclipse安装资源文件支持中文插件编辑属性 -
lmzpp:
学习了,谢谢
MyEclipse安装资源文件支持中文插件编辑属性 -
nba:
不错, 谢谢了
MyEclipse安装资源文件支持中文插件编辑属性 -
CMShmily:
MyEclipse安装资源文件支持中文插件编辑属性
a多媒体
实例349 测试音频播放器
实例350 测试视频播放器
实例351 视频反色效果
实例352 实现一个录音机
实例353 建立一个调色板
实例349 测试音频播放器
import java.applet.Applet; import java.applet.AudioClip; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URL; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class OggPlay extends JFrame { private JPanel contentPane; private JTextField jtextField = new JTextField();// 用于输入声音文件的地址 private JLabel jLabel = new JLabel(); // 用于显示播放器的状态信息 private JPanel jPanel = new JPanel(); // 用于包容下面两个JButton对象 // 用于控制播放和停止声音文件 private JButton jbutton1 = new JButton(); private JButton jbutton2 = new JButton(); private AudioClip clip; // 用于播放声音文件 private void init() throws Exception { contentPane = (JPanel) this.getContentPane(); this.setSize(new Dimension(418, 118)); this.setTitle("音频片断播放器"); jLabel.setFont(new Font("Dialog", 0, 12)); jLabel.setToolTipText(""); jLabel.setText("准备就续");// 播放器的初始状态信息 jbutton1.setFont(new Font("Dialog", 0, 12)); jbutton1.setText("播放"); jbutton1.addActionListener(new ActionListener() {// 添加ActionListener public void actionPerformed(ActionEvent e) { jbutton1_actionPerformed(e); } }); jbutton2.setEnabled(false);// "停止"按钮初始为不可访问 jbutton2.setFont(new Font("Dialog", 0, 12)); jbutton2.setText("停止"); jbutton2.addActionListener(new ActionListener() {// 添加ActionListener public void actionPerformed(ActionEvent e) { jbutton2_actionPerformed(e); } }); // 设置初始的声音文件路径,读者可以自定义路径和设备名称 jtextField.setText(ClassLoader.getSystemResource("aa.wav").toString()); contentPane.add(jLabel, BorderLayout.SOUTH); contentPane.add(jPanel, BorderLayout.CENTER); jPanel.add(jbutton1, null); jPanel.add(jbutton2, null); contentPane.add(jtextField, BorderLayout.NORTH); clip = null;// 声音剪辑对象初始化为null this.show(); } public void jbutton1_actionPerformed(ActionEvent e) { try { jbutton1.setEnabled(false); jbutton2.setEnabled(true); // 实例化一个AudioClip对象clip,将声音文件的数据存入clip对象中 clip = Applet.newAudioClip(new URL(this.jtextField.getText())); System.out.println(this.jtextField.getText()); // 开始播放clip对象中的声音数据 clip.play(); // 显示播放器的状态信息 this.jLabel.setText("正在播放:" + this.jtextField.getText()); } catch (Exception err) { err.printStackTrace(); } } public void jbutton2_actionPerformed(ActionEvent e) { try { jbutton1.setEnabled(true); jbutton2.setEnabled(false); // 停止播放clip对象中的声音数据 clip.stop(); // 显示播放器的状态信息 this.jLabel.setText("准备就绪"); } catch (Exception err) { err.printStackTrace(); } } public static void main(String[] args) throws Exception { new OggPlay().init(); } }
实例350 测试视频播放器
import java.awt.*; import java.io.IOException; import javax.media.*; import javax.swing.*; public class RealOnePlayer extends JFrame implements ControllerListener { private JPanel jp; private BorderLayout bl = new BorderLayout(); Component cp1 = null;// 创建一个视频播放组件 Component cp2 = null;// 创建一个视频播放组件 Player player = null;// 播放器对象 public RealOnePlayer(String url) { this.setTitle("JMF视频播放器"); try { Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, new Boolean(true));// 这一行很重要,可以解决Swing组件和AWT组件混用带来的麻烦 player = Manager.createPlayer(new MediaLocator(url)); } catch (NoPlayerException e) { exitProc("找不到播放器!");// 显示消息并退出程序 } catch (IOException e) { exitProc("不能创建播放器!");// 显示消息并退出程序 } if (player == null) { exitProc("不能创建播放器!");// 显示消息并退出程序 } player.addControllerListener(this);// 添加ControllerListener监听器 player.prefetch();// 获取媒体数据 } public void controllerUpdate(ControllerEvent e) { if (e instanceof ControllerClosedEvent) {// 如果控制事件是关闭,就退出程序 System.exit(0); } if (e instanceof EndOfMediaEvent) {// 如果控制事件是媒体数据播放完毕,则player设置新的媒体时间,重新开始播放 player.setMediaTime(new Time(0)); player.start(); return; } if (e instanceof PrefetchCompleteEvent) {// 如果控制事件是获得媒体数据完成,则开始播放 player.start(); return; } // 如果控制事件是Realize完成,则播放器player获得播放画面的组件,用于媒体可视化播放,并将组件加到MediaDemo_2窗口中,同时获得播放控制组件,也添加到MediaDemo_2窗口上,用于控制媒体的播放 if (e instanceof RealizeCompleteEvent) { Component vc = player.getVisualComponent(); if (vc != null) { this.getContentPane().add(vc, BorderLayout.CENTER); Component cc = player.getControlPanelComponent(); if (cc != null) { this.getContentPane().add(cc, BorderLayout.SOUTH); this.pack(); this.setResizable(false);// 窗口大小适合媒体画面,并不可改变 this.setVisible(true);// 显示页面 } } } } private void exitProc(String str) { System.out.println(str); System.exit(-1); } public static void main(String[] args) { RealOnePlayer md = new RealOnePlayer(ClassLoader.getSystemResource( "lift.mpeg").toString()); } }
实例351 视频反色效果
import java.awt.*; import java.io.IOException; import javax.media.Buffer; import javax.media.Codec; import javax.media.ControllerClosedEvent; import javax.media.ControllerEvent; import javax.media.ControllerListener; import javax.media.Controls; import javax.media.Effect; import javax.media.EndOfMediaEvent; import javax.media.Format; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.NoProcessorException; import javax.media.NotConfiguredError; import javax.media.Processor; import javax.media.RealizeCompleteEvent; import javax.media.Time; import javax.media.UnsupportedPlugInException; import javax.media.control.TrackControl; import javax.media.format.RGBFormat; import javax.swing.*; public class Media11 extends JFrame implements ControllerListener { private JPanel contentPane; private BorderLayout bl = new BorderLayout(); Component vc = null;// 媒体播放画面组件 Component cc = null;// 媒体播放控制组件 TrackControl[] tc = null;// 各条媒体踪迹的数据控制处理对象 Processor p = null;// 媒体处理器,控制整个媒体的播放过程 public Media11(String mediaURL) { Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, new Boolean(true));// 处理swing组件和awt组件的冲突 MediaLocator ml = new MediaLocator(mediaURL); try { p = Manager.createProcessor(ml); } catch (NoProcessorException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }// 根据媒体定位对象,实例化一个处理器exitProc()方法向屏幕显示信息,并退出程序 if (p == null) { exitProc("不能创建播放器!"); } p.addControllerListener(this);// 添加处理器的控制状态变化监听器 p.configure();// 初始化处理器的设置 while (p.getState() != p.Configured) ; p.setContentDescriptor(null);// 如果处理器不能完成初始设置,则设置媒体上下文描述器 tc = p.getTrackControls();// 处理器得到媒体数据的所有踪迹控制处理对象 if (tc.length > 0) { Codec[] cd = new Codec[1]; cd[0] = new NegativeEffect();// 设置媒体编码器为经NegativeEffect对象处理后的编码器 try { tc[0].setCodecChain(cd); } catch (UnsupportedPlugInException e) { e.printStackTrace(); } catch (NotConfiguredError e) { e.printStackTrace(); }// 指定一条将在每条媒体踪迹中使用的编码器插件链 } p.realize();// 处理器进入realizing状态 } public void controllerUpdate(ControllerEvent e) {// 如果事件是控制器关闭事件、则正常退出程序 if (e instanceof ControllerClosedEvent) System.exit(0); // 如果是媒体播放完毕,则重新设置媒体时间 if (e instanceof EndOfMediaEvent) { p.setMediaTime(new Time(0)); return; } // 如是是Realize完成,则处理器获得可视化的播放画面组件,实例化vc对象并添加到主窗口中;同时获得播放控制组件,实例化cc对象,并添加到主窗口中 if (e instanceof RealizeCompleteEvent) { vc = p.getVisualComponent(); if (vc != null) this.getContentPane().add(vc, BorderLayout.CENTER); cc = p.getControlPanelComponent(); if (cc != null) this.getContentPane().add(cc, BorderLayout.SOUTH); // 调整主窗口属性,并使窗口适合媒体画面大小,而不可改变 this.pack(); this.setResizable(false); this.setVisible(true); } } public void exitProc(String str) { System.out.println(str); System.exit(-1); } public static void main(String[] args) { new Media11(ClassLoader.getSystemResource("lift.mpeg").toString()); } } class NegativeEffect implements Effect { private static String EffectName = "NegativeEffect"; protected RGBFormat inputFormat;// 输入的RGB色彩格式 protected RGBFormat outputFormat;// 输出的RGB色彩格式 protected Format[] supportedInputFormats;// 所有支持的输入格式 protected Format[] supportedOutputFormats;// 所有支持的输出格式 // 构造方法,实例化所有支持的输入输出色彩为RGB色彩格式 public NegativeEffect() { supportedInputFormats = new Format[] { new RGBFormat() }; supportedOutputFormats = new Format[] { new RGBFormat() }; } // 实现Effect接口继承自Codec的方法,返回所有支持的输入格式 public Format[] getSupportedInputFormats() { System.out.println("getSupportedInputFormats"); return supportedInputFormats; } // 实现Effect接口继承自Codec的方法,返回所有支持的输出格式 public Format[] getSupportedOutputFormats(Format parm) { System.out.println("getSupportedOutputFormats[in = " + parm + "]"); // 如果传入的Format对象parm不是RGBFormat实例,则返回默认的RGBFormat格式对象 if (parm == null) return supportedOutputFormats; if (!(parm instanceof RGBFormat)) return new Format[0]; // 如果是,根据该格式返回一个对象引用 RGBFormat rf = (RGBFormat) parm; RGBFormat rfb = (RGBFormat) parm.clone(); return new Format[] { rfb }; } // 实现Effect接口继承自Codec的方法,返回传入的数据格式 public Format setInputFormat(Format parm) { System.out.println("setInputFormatInput[input=" + parm + "]"); inputFormat = (RGBFormat) parm; return (RGBFormat) inputFormat; } // 实现Effect接口继承自Codec的方法,返回传入的数据格式 public Format setOutputFormat(Format parm) { System.out.println("setOutputFormat[output=" + parm + "]"); outputFormat = (RGBFormat) parm; return (RGBFormat) outputFormat; } // 不一定要实现的两个方法,仅仅满足get、set的对称性 public Format getInputFormat() { System.out.println("getInputFormat"); return inputFormat; } public Format getOutputFormat() { System.out.println("getOutputFormat"); return outputFormat; } // 实现Effect接口自Codec的方法,处理输入的媒体数据parm,得到经处理的输出的媒体数据parm,该方法完成本类的效用,处理媒体数据,达到使色彩反色输出的处理效果是本类的核心方法 public int process(Buffer parm1, Buffer parm2) { Object o = parm1.getData();// 获得输入的数据对象的引用 int inLength = parm1.getLength();// 输入的数据的长度 int inOffset = parm1.getOffset();// 偏移量 // 如果输入输出的媒体数据非合法的short[]int[]形式,返回出错信息 if (!(o instanceof short[]) && !(o instanceof int[])) return this.BUFFER_PROCESSED_FAILED; Object oo = parm2.getData(); if (oo != null) { if (!(oo instanceof short[]) && !(oo instanceof int[])) return this.BUFFER_PROCESSED_FAILED; } else { // 根据输入的数据长度,设置输出的数据长度 if (o instanceof short[]) parm2.setData(new short[inLength]); else parm2.setData(new int[inLength]); oo = parm2.getData(); } // 根据输入的数据偏移量,设置输出的数据偏移量 int outOffset = parm2.getOffset(); if (o instanceof short[]) { short[] inData = (short[]) o; short[] outData = (short[]) oo; // 处理输入的媒体数据,将色彩取反,并将数据放入输出的媒体数据对象中 for (int i = 0; i < inLength; i++) outData[outOffset++] = (short) -inData[inOffset++]; } else { int[] inData = (int[]) o; int[] outData = (int[]) oo; for (int i = 0; i < inLength; i++) outData[outOffset++] = -inData[inOffset++]; } // 设置输出媒体数据的格式 parm2.setFormat(outputFormat); // 设置输出媒体数据的长度和偏移 parm2.setLength(inLength); parm2.setOffset(0); // 返回数据处理成功完成信息 return this.BUFFER_PROCESSED_OK; } // 返回类名 public String getName() { System.out.println("getName"); return EffectName; } // 以下的方法不一定要求实现,这些方法是Effect接口的父类的上层类 public void open() { System.out.println("open"); } public void close() { System.out.println("close"); } public void reset() { System.out.println("reset"); } public Object[] getControls() { System.out.println("getControls"); return new Controls[0]; } public Object getControl(String parm1) { System.out.println("getControl[controlType=" + parm1 + "]"); Class clas = null; try { Object[] cs = this.getControls(); for (int i = 0; i < cs.length; i++) { if (clas.isInstance(cs[i])) { return cs[i]; } } clas = Class.forName(parm1); } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; } }
实例352 实现一个录音机
import java.awt.*; import java.awt.event.*; import java.io.IOException; import java.util.Vector; import javax.media.*; import javax.media.datasink.*; import javax.media.format.AudioFormat; import javax.media.protocol.*; import javax.media.control.StreamWriterControl; import javax.swing.*; //录音机 public class Recorder extends JFrame implements ActionListener, DataSinkListener { private JPanel contentPane; private BorderLayout borderLayout = new BorderLayout(); StateHelper sh; Processor processor; DataSink fileWriter = null; private JButton btStart = new JButton(" Start "); private JButton btStop = new JButton(" Stop "); private JLabel jLabel = new JLabel("录间机演示", SwingConstants.CENTER); private void initial() throws Exception { // 添加按扭的事件监听器 this.btStart.addActionListener(this); this.btStop.addActionListener(this); contentPane = new JPanel(borderLayout); // 添加按扭到指定位置 contentPane.add(this.btStart, BorderLayout.WEST); contentPane.add(this.jLabel, BorderLayout.CENTER); contentPane.add(this.btStop, BorderLayout.EAST); this.add(contentPane); this.setSize(350, 120); this.setVisible(true); // 申明一个捕获设备信息类,用于得到本机上的声音捕获相关设备信息 CaptureDeviceInfo cdi = null; AudioFormat af = new AudioFormat(AudioFormat.LINEAR, 8000, 16, 1);// 创建一个指定参数的声音媒体格式 // 获得设备信息 Vector deviceList = CaptureDeviceManager.getDeviceList(af); if (deviceList.size() > 0) { cdi = (CaptureDeviceInfo) deviceList.firstElement();// 使用第一个设备 } else { exitProc("Could not find audiodevice");// 设备都不可用,退出程序 } // 实例化一个处理器 processor = Manager.createProcessor(cdi.getLocator()); // 实例化一个实现ControllerListener接口的类,处理控制状态变化事件 sh = new StateHelper(processor); // 设置超时10000ms 退出 if (!sh.configure(10000)) { exitProc("Could not configure processon"); } // 用于在磁盘上指定存储获取的声音数据文件 FileTypeDescriptor ftd = new FileTypeDescriptor( FileTypeDescriptor.BASIC_AUDIO); processor.setContentDescriptor(ftd); if (sh.realize(10000)) { exitProc("Could not realize processor"); } } public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); ((Component) e.getSource()).setEnabled(false);// 按扭单击后变为不可访问状态 // 如查被单击的是"Start"按扭,则开始录音,并将声音数据写到指定的文件中 if (cmd.equals("Start")) { DataSource source = processor.getDataOutput(); MediaLocator dest = new MediaLocator("file:/c:/out.au"); try { fileWriter = Manager.createDataSink(source, dest); fileWriter.addDataSinkListener(this); fileWriter.open(); } catch (NoDataSinkException err) { exitProc("Could not create data sink"); } catch (IOException ee) { ee.printStackTrace(); } // 设置声音数据的长度限制为10000000B StreamWriterControl swc = (StreamWriterControl) processor .getControl("javax.media.control.StreamWriterControl"); if (swc != null) { swc.setStreamSizeLimit(10000000); } try { fileWriter.start(); } catch (IOException err) { System.out.println(err.toString()); } processor.start(); return; } // 如果单击的是"Stop"按扭,则关闭处理器 processor.stop(); processor.close(); } public void dataSinkUpdate(DataSinkEvent e) { if (e instanceof EndOfStreamEvent) { fileWriter.close(); System.exit(0); } } public void exitProc(String str) { System.out.println(str); System.exit(-1); } public static void main(String args[]) throws Exception { new Recorder().initial(); } } class StateHelper implements ControllerListener { Player player = null; boolean configured = false; boolean realized = false; boolean prefetched = false; boolean failed = false; boolean closed = false; // 构造方法的传入参数是Player对象 public StateHelper(Player player) { this.player = player; this.player.addControllerListener(this); } // 完成configure操作 public boolean configure(int timeOutMillis) { long startTime = System.currentTimeMillis(); synchronized (this) { if (player instanceof Processor) { ((Processor) player).configure(); } else { return false; } while (!configured && !failed) { try { wait(timeOutMillis); } catch (Exception e) { } if (System.currentTimeMillis() - startTime > timeOutMillis) break; } } return this.configured; } // 完成realize操作 public boolean realize(int timeOutMillis) { long startTime = System.currentTimeMillis(); synchronized (this) { player.realize(); while (!realized && !failed) { try { wait(timeOutMillis); } catch (Exception e) { } if (System.currentTimeMillis() - startTime > timeOutMillis) break; } } return this.realized; } // 完成prefetch操作 public boolean prefetch(int timeOutMillis) { long startTime = System.currentTimeMillis(); synchronized (this) { player.prefetch(); while (!prefetched && !failed) { try { wait(timeOutMillis); } catch (Exception e) { } if (System.currentTimeMillis() - startTime > timeOutMillis) break; } } return this.prefetched; } public void close() { synchronized (this) { player.close();// 关闭播放器 while (!closed) {// 如果closed为false,则等待100ms完成程序结束处理 try { wait(100); } catch (Exception e) { } } } player.removeControllerListener(this);// 撤销播放器的控制监听器 } // 处理ControllerEvent事件 public void controllerUpdate(ControllerEvent e) { if (e instanceof RealizeCompleteEvent) { this.realized = true; } else if (e instanceof ConfigureCompleteEvent) { this.configured = true; } else if (e instanceof PrefetchCompleteEvent) { this.prefetched = true; } else if (e instanceof ControllerErrorEvent) { this.failed = true; } else if (e instanceof ControllerClosedEvent) { this.closed = true; } else { return; } } }
实例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); } }
- 运行所需要的包和框架.rar (4.9 MB)
- 下载次数: 6
发表评论
-
JAVA范例 十九) 多媒体与图像处理 (二)
2011-09-30 19:27 1633图像处理 实例354 在计算机内存中创建一个图像 i ... -
JAVA范例 - Applet小应用程序
2011-09-30 18:27 3270Applet小应用程序 实例337 不断变大的文字 ... -
JAVA范例 十七)界面-Swing(二)
2011-09-30 18:06 1394实例326 BorderLayout版面布局 imp ... -
JAVA范例 十七)界面-Swing(一)
2011-09-30 17:51 2152实例306 JFrame框架的应用 import j ... -
JAVA范例 十六)数据库技术
2011-07-21 20:16 1632数据库技术 实例293 加载JDBC驱动程序 ... -
JAVA范例 十五)网络编程
2011-07-21 17:38 140515.1 IP地址 实例270 获 ... -
JAVA范例 十四)泛型
2011-07-21 17:30 1171第14章 泛型 14 ... -
JAVA范例 十三)多线程编程(3)
2011-07-21 17:12 1564线程应用实例 实例244 下雪的村庄 ... -
JAVA范例 十三)多线程编程(2)
2011-07-21 17:06 121013.3 线程的优先级 实例238 排座位(线程优 ... -
JAVA范例 十三)多线程编程(1)
2011-07-21 16:07 1742第13章 多线程编程 13.1 多线程的五种基本状态 ... -
JAVA范例 十二)Java高级开发技术
2011-07-21 13:55 142712.1 Set 实 ... -
JAVA范例 十一)JAVA常用类
2011-07-21 13:34 138911.1 数学Math类 实例186 求圆周率∏值 ... -
JAVA范例 十) 内部类与接口
2011-07-21 12:30 1054内部类与接口 10.1 成员内部类 ... -
JAVA范例 九)面向对象---面向对象的四大特征
2011-07-21 11:50 17209.1 抽象 实例 ... -
JAVA范例 八)面向对象---面向对象的设计模式、垃圾回收
2011-07-21 11:43 9808.3 面向对象的 ... -
JAVA范例 八)面向对象---类、成员变量和方法
2011-07-21 11:30 1734类 实例148 简单的通讯录类 p ... -
JAVA范例 七)输入/输出流---字符流
2011-07-21 02:40 2184字符流 实例140 按顺序创建文件 ... -
JAVA范例 七)输入/输出流---字节流
2011-07-21 02:28 19947.2 字节流 实例123 复制指定目录下的文件 ... -
JAVA范例 七)输入/输出流---文件和目录
2011-07-21 02:16 1736文件和目录 实例116 ... -
JAVA范例 六)字符串---StringBuffer
2011-07-21 02:12 1433字符串缓存类StringBuffer ...
相关推荐
《Java范例开发大全》共22章,内容涉及Java开发环境的搭建、Java基础类型与运算符、条件控制语句、异常处理、数组、字符串、输入输出流、面向对象及其四大特征、内部类与接口、Java常用类、集合、多线程编程、Java...
总的来说,《Java2范例入门与提高》是一本涵盖了Java基础知识、多媒体处理和网络编程的综合性教材,无论你是刚接触Java的新手,还是希望在现有技能上更进一步的开发者,都能从中受益。通过实例学习,你可以逐步熟悉...
第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑...
第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6...
第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑...
第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系...
Java范例开发大全(全书源程序),目录如下: 第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
开发者需要掌握基本的图像处理算法,并且对GUI设计有一定了解。 4. **简单媒体播放器**: 媒体播放器项目通常涉及Java的多媒体API,如Java Media Framework (JMF) 或者JavaFX,用于播放音频和视频文件。开发者需要...
Android多媒体应用开发是移动应用开发中的重要组成部分,涉及音频、视频、图像等多种媒体格式的处理与展现。Android平台提供了丰富的多媒体API,使得开发者能够轻松地集成多媒体功能到应用程序中,为用户带来更丰富...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
7. **图形与多媒体**:利用Graphics类绘制图形,以及播放音频和显示图像的方法。 8. **线程管理**:在J2ME环境中处理并发和异步任务,确保UI的响应性和程序的稳定性。 9. **优化技巧**:学习如何优化代码以适应...
Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
示例描述:本章学习Java的异常处理。 demoException_1.java 异常示例1 demoException_2.java 异常示例2 demoException_3.java 异常示例3 demoException_4.java 异常示例4 demoException_5.java 异常示例5 ...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
4.21 查找程序根目录下所有文件——JavaI/O与ListActivity的结合.. 4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——...