Java常用的一些多媒体文件基本操作方法简介

播放幻灯片和动画

用实例说明播放幻灯片和动画的方法。

【例】小应用程序先将幻灯片读入数组在存储,单击鼠标变换幻灯片,逐张显示。

import java.applet.*import java.awt.*;
import java.awt.event.*;
public class Example7_7 extends Applet implements MouseListener{
  final int number = 50; //假定幻灯片有50张
  int count = 0;
  Image[] card = new Image[number];
  public void init(){
    addMouseListener(this);
    for (int i = 0; i < number; i++){
      card[i] = getImage(getCodeBase(), "DSC0033" + i + ".jpg");
    }
  }
  public void paint(Graphics g){
    if ((card[count]) != null)
      g.drawImage(card[count], 10, 10, card[count].getWidth(this),card[count].getHeitht(this), this);
  }
  public void mousePressed(MouseEvent e){
    count = (count + 1) % number; //循环逐张显示
    repaint();
  }
  public void mouseRelease(MouseEvent e){}
  public void mouseEntered(MouseEvent e){}
  public void mouseExited(Mouse Event e){}
  public void mouseClicked(MouseEvent e){}
}

【例】小应用程序说明播放动画的方法,要求播放的图片和小程序放在相同的目录中,程序通过快速显示一组图片造成显示动画的效果。小应用程序利用线程控制动画图片的逐显示。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Example7_8 extends Applet implements Runnable{
  final int number = 50;
  int count = 0;
  Thread mythread;
  Image[] pic = new Image[number];
  public void init(){
    setSize(300, 200);
    for (int i = 0; i <= number; i++){
      //载入动画图片
      pic[i - 1] = getImage(getCodeBase(), "DSC0033" + i + ".jpg");
    }
  }
  public void start(){
    mythread = new Thread(this); //创建一个线程
    mythread.start(); //启动线程执行
  }
  public void stop(){
    mythread = null;
  }
  public void run(){
    //线程的执行代码
    while (true){
      repaint();
      count = (count + 1) % number; //改变显示的图片号
      try{
        mhythread.sleep(200);
      }
      catch (InterruptedExeception e){}
    }
  }
  public void paint(Graphics g){
    if ((pic[count] != null)
      g.drawImage(pic[count], 10, 10, pic[count].getwidth(this), pic[count].getHeight(this), this);
  }
}

播放声音

Java语言老根据地的音频格式有多种:au、aiff、wav、midi、rfm等。小程序要播放音频文件,可使用类AudioClip,该类在java.applet.AudioClip类库中定义。小程序先创建AudioClip对象,并用getAudioClip()方法为其初始化。代码形式如下:

  AudioClip audioClip = getAudioClip(getCodeBase(),”myAudioClipFile.au”);

如果要从网上获得音频文件,可用方法getAudioClip(URL url, String name),根据url地址及音频文件name获得可播放的音频对象。

控制声音的播放有3个方法:play()播放声音,loop()循环播放和stop()停止播放。

【例】能播放声音的小应用程序。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Example7_9 extends Applet implements ActionListener{
  AudioClip clip; //声明一个音频对象
  Button buttonPlay, buttonLoop, buttonStop;
  public void init(){
    clip = getAudioClip(getCodeBase(), "2.wav");
    //根据程序所在地址处声音文件2.wav创建音频对象,
    //Applet类的getCodeBase()方法可以获得小程序所在的html页面的URL地址。
    buttonPlay = new Button("开始播放");
    buttonLoop = new Button("循环播放");
    buttonStop = new Button("停止播放");
    buttonPlay.addActionListener(this);
    buttonStop.addActionListener(this);
    buttonLoop.addActionListener(this);
    add(buttonPlay);
    add(buttonLoop);
    add(buttonStop);
  }
  public void stop(){
    clip.stop(); //当离开此页面时停止播放
  }
  public void actionPerformed(ActionEvent e){
    if (e.getSource() == buttonPlay){
      clip.play();
    }
    else if (e.getSource() == buttonLoob){
      clip.loop();
    }
    else if (e.getSource() == buttonStop){
      clip.stop();
    }
  }
}

【例】如果声音文件较大或网络速度慢会影响小程序的初始化工作。这可用多线程技术解决。在一个级别较低的线程中完成音频对象的创建,即由后台载入声音文件,前台播放。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Hanoi extends applet implements Runnable, ActionListener{
  AudioClip clip; //声明一个音频对象
  textField text;
  Thread thread;
  Button buttonPlay, buttonLoop, buttonStop;
  public void init(){
    thread = new Thread(this); //创建新线程
    thread .setPriority(Thread.MIN_PRIORITY);
    buttonPlay = new Button("开始播放");
    buttonLoop = new Button( "循环播放");
    buttonStop = new Button("停止播放");
    text = new textField(12);
    buttonPlay.addActionListener(this);
    buttonStop.addActionListener(this);
    buttonLoop.addActionListener(this);
    add(buttonPlay);
    add(buttonLoop);
    add(buttonStop);
    add(text);
  }
  public void start(){
    thread.start();
  }
  public void stop(){
    clip.stop();
  }
  public void actionPerformed(ActionEvent e){
    if (e.getSource() == buttonPlay(){
      clip.play();
    }
    else if (e.getSource() == buttonLoop(){
      clip.loop();
    }
    else if (e.getSource() == buttonStop(){
      clip.stop();
    }
  }
  public void run(){
    //在线程thread 中创建音频对象
    clip = getAudioclip(getCodeBase(), "2.wav");
    text.setText("请稍等");
    if(clip ! = null){
      buttonPlay.setBackground(Color.red); buttonLoop.setBackground(Color.green); text.setText("您可以播放了");
    } //获得音频对象后通知可以播放
  }
}
(0)

相关推荐

  • Java语言简介(动力节点Java学院整理)

    Java 简介 Java是由Sun Microsystems公司(现已被oracle公司收购)于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出,据oracle官方数据指数,目前全球已有上亿的系统是使用Java开发的. Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程

  • Java编程中使用throw关键字抛出异常的用法简介

    throw抛出异常的方式比较直接: if(age < 0){ throw new MyException("年龄不能为负数!"); } 来看一个例子: package Test; public class Test2 { public static void main(String[] args) { String s = "abc"; if(s.equals("abc")) { throw new NumberFormatExceptio

  • Java字符串中删除指定子字符串的方法简介

    有些字符串是我们存储某种类型名称的,往往有逗号','或者其他符号来分隔.如果我们删除某一个参数时,往往没有数组或者列表那么方便.但是,如果有了下面这个方法,我们同样可以做好. public class Test3 { /** * @param args */ public static void main(String[] args) { //要切割的字符串 String s = "123.jpg,113.jpg,121.jpg,122.jpg,131.jpg"; String sub

  • java struts2框架简介

    一.Struts2简介  1.Struts2概述 Struts2是Apache发行的MVC开源框架.注意:它只是表现层(MVC)框架. M:model-----数据封装------->javabean V:view------视图----------->jsp C:control------控制器--------> struts2( filter),struts1(servlet)  2.Struts2的来历 Struts1:也是apache开发的一套mvc的开源框架.在2005年之前非

  • Java的Struts框架简介与环境配置教程

    Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架. Struts2不只是Struts1下一个版本,它是一个完全重写的Struts架构. WebWork框架开始以Struts框架为基础,其目标是提供一个加强和改进框架Struts来使web开发的开发人员更容易. 一段时间后,WebWork框架和Struts社区联手打造的著名的Struts2框架. Struts 2框架的特点: 这里有一些强大的功能,可能会迫使你考虑Struts2: POJO表单和POJO动作 - Struts2的S

  • java基础之标签、按钮和按钮事件简介

    标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关. 标签 标签(JLabel)是最简单的Swing组件.标签对象的作用是对位于其后的界面组件作说明.可以设置标签的属性,即前景色,背景色.字体等,但不能动态地编辑标签中的文本. 程序关于标签的基本内容有以下几个方面: 1.声明一个标签名: 2.创建一个标签对象: 3.将标签对象加入到某个容器. JLabel类的主要构造方法是: 1.JLabel ():构造一个无显示文字的标签: 2.JLabel (String s):构造一

  • 简介Java的Spring框架的体系结构以及安装配置

    体系结构 Spring有可能成为所有企业应用程序的一站式服务,然而,Spring是模块化的,使您可以挑选哪些模块是适用的,而不必把在余下的也引入.以下部分给出详细介绍在Spring框架中所有可用的模块. Spring框架提供约20个模块,可以根据应用程序的要求来使用. 核心容器: 核心容器组成的核心,Beans,上下文和表达式语言模块,其细节如下: 核心模块提供了框架的基本组成部分,包括IoC和依赖注入功能. Bean模块提供BeanFactory是工厂模式的经典实现. Context 上下文模

  • Java常用的一些多媒体文件基本操作方法简介

    播放幻灯片和动画 用实例说明播放幻灯片和动画的方法. [例]小应用程序先将幻灯片读入数组在存储,单击鼠标变换幻灯片,逐张显示. import java.applet.*import java.awt.*; import java.awt.event.*; public class Example7_7 extends Applet implements MouseListener{ final int number = 50; //假定幻灯片有50张 int count = 0; Image[]

  • Java常用工具类库——Hutool的使用简介

    前言 Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以"甜甜的". Hutool 中的工具方法来自于每个用户的精雕细琢,它涵盖了 Java 开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当: Hutool 是项目中"util"包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专

  • Java常用开源库汇总

    Java的经久不衰,很大程度上得益于Java的生态好.在日常开发中,我们也会经常使用到各种开源库和工具类,为了避免重复造轮子,本文将贴出工作及学习中会用到的部分开源库和工具类.Java的生态实在太大,这里只能列举一部分.如果你对此感兴趣,不妨去读读他们的源码. HTML解析器jsoup 1.1 介绍 jsoup(GitHub地址.中文文档)是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方

  • Java详细讲解文件的读写操作方法

    目录 java的IO 字节流 InputStream的常用方法 OutputStream的常用方法 字节流读写文件 如何将数据写入到文件中 java的IO Java程序允许通过流的方式与输入输出设备进行数据传输.Java中的流都在java.io包中,称为IO(输入输出)流.IO流按照操作数据的不同,可以分为字节流和字符流,按照数据传输方向的不同,又可以分为输入流和输出流,程序从输入流中读取数据,向输出流中写入数据,在IO包中,字节流的输入输出分别用java.InputStream和java.io

  • 分享Java常用几种加密算法(四种)

    对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去.收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文.在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥. 简单的java加密算法有: BASE 严格地说,属于编码格式,而非加密算法 MD(Mes

  • Java常用加密算法实例总结

    本文实例总结了Java常用加密算法.分享给大家供大家参考,具体如下: 项目中第一次深入地了解到加密算法的使用,现第一阶段结束,将使用到的加密算法和大家分享一下: 首先还是先给大家普及一下常用加密算法的基础知识 基本的单向加密算法 BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) 复杂的加密算法 RSA(算法的名字以发明者的名字命名:Ron Rives

  • Java常用的时间工具类实例

    本文实例讲述了Java常用的时间工具类.分享给大家供大家参考,具体如下: package org.zhy.date; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * 时间类型工具类 * * @author zhengyi * */ pu

  • Java常用排序算法及性能测试集合

    现在再回过头理解,结合自己的体会, 选用最佳的方式描述这些算法,以方便理解它们的工作原理和程序设计技巧.本文适合做java面试准备的材料阅读. 先附上一个测试报告: Array length: 20000bubbleSort : 766 msbubbleSortAdvanced : 662 msbubbleSortAdvanced2 : 647 msselectSort : 252 msinsertSort : 218 msinsertSortAdvanced : 127 msinsertSor

  • 初学java常用开发工具介绍

    Java的应用越来越广泛,学习Java的人也越来越多.学过程序设计的人知道,使用Basic进行程序设计,可以使用QBasic.Visual Basic等开发工具:使用C语言进行程序设计,可以使用Turbo C.Visual C++.C++ Builder等开发工具.这些开发工具集成了编辑器和编译器,是集成开发工具,很方便使用.学习Java程序设计,同样需要方便易用的开发工具.Java的开发工具很多,而且各有优缺点,初学者往往不知道有哪些常用的开发工具,或者由于面临的选择比较多而产生困惑.本文对初

  • Java常用面板之JScrollPane滚动面板实例详解

    在设置界面时,可能会遇到一个较小的容器窗体中显示一个较大部分的内容的情况,这时候可以使用 JScrollPane 面板. JScrollPane 面板是带滚动条的面板,它也是一种容器,但是 JScrollPane 只能放置一个组件,并不可以使用布局管理器.如果需要在 JScrollPane 面板上放置多个组件,需要将多个组件放置在 JPanel 上,然后将 JPanel 面板作为一个整体组件添加在 JScrollPane 组件上.这点大家一定要注意!下面我们通过一个实例来了解下它的使用方法和技巧

随机推荐