文档库 最新最全的文档下载
当前位置:文档库 › 设计资料

设计资料

Java推出的JMF(Java Media Framework)之后标着Java进入了多媒体时代,如果你想编写能播放视频的Java程序,必须下载sun公司的JMF2.1(或者更高的版本),它为我们提供了编写多媒体必须的包:java.media


没有安装JFM的在编译*.java的时候会提示找不到java.media包


java JMF的配置方法

1.首先去sun公司的主页去下载安装包
2.下载得到一个名为jdk-6u12-windows-i586-p 的文件

3.双击安装,默认的安装路径是C:\Program Files\JMF2.1.1e(可以根据自己的需要改变这个路径)

4.安装后,需要配置下面的几个变量(vista系统和XP相同),下面以vista系统为例子

a.点击我的电脑--->属性--->高级系统设置--->环境变量

b.找到CLASSPATH,分别增加jmf.jar和sound.jar

C:\Program Files\JMF2.1.1e\lib\jmf.jar;

C:\Program Files\JMF2.1.1e\lib\sound.jar;

(其中 C:\Program Files\JMF2.1.1e为你的JFM的安装路径)

c.找到PATH,增加动态库

C:\Program Files\JMF2.1.1e\bin;

提示:每添加一项后,不要忘记了后面的分号


好运~


附一个用JAVA编写播放视频的程序


import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import https://www.wendangku.net/doc/9f6580901.html,.*;
import java.io.*;
import javax.media.*;
public class JavaVideo extends Applet implements ControllerListener,Runnable,ItemListener
{
Player player;
String str;
Thread mythread;
Choice choice;
Component visualCompoment,controlCompoment,progressBar;
String mediaFile;
URL mediaURL,codeBase;
Frame frame;
public void init()
{
str="music.MPE";
mythread=new Thread(this);
choice=new Choice();
choice.add("music01.MPG");
choice.add("music02.avi");
choice.add("music03.avi");
choice.addItemListener(this);
frame=new Frame("Movie System");
frame.setSize(640,480);
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
if(player!=null)
{
player.stop();
player.deallocate();
}
frame.setVisible(false);
System.exit(0);
}
});
add(choice);
}
public void stop()
{
if(player!=null)
{
player.stop();
}
}
public synchronized void controllerUpdate(ControllerEvent event)
{
player.getDuration();
if(event instanceof RealizeCompleteEvent)
{
if((visualCompoment=player.getVisualComponent())!=null)
{
frame.add("Center",visualCompoment);
}
if((controlCompoment=player.getControlPanelComponent())!=null)
if(visualCompoment!=null)
frame.add("South",controlCompoment);
else
frame.add("Center",controlCompoment);
frame.validate();
frame.pack();
}
else if(event instanceof PrefetchCompleteEvent)
{
player.start();
}
}
public void itemStateChanged(ItemEvent e)
{
str=choice.getSelectedItem();
if(player==null) {}
else
{
player.stop();
player.deallocate();
}
frame.removeAll();
frame.setVisible(true);
frame.setBounds(300,100,150,100);
frame.validate();
if(!(mythread.isAlive()))
{
mythread=new Thread(this);
}
try{
mythread.start();


}
catch(Exception ee) {}
}
public synchronized void run()
{
try{
mediaURL=new URL(codeBase,str);
player=Manager.createPlayer(mediaURL);
player.getDuration();
if(player!=null)
{
player.addControllerListener(this);
}
else
{
System.out.println("failed to creat player for"+mediaURL);
}
}
catch(MalformedURLException e)
{
System.out.println("URL for"+mediaFile+"is invalid");
}
catch(IOException e)
{
System.out.println("URL for"+mediaFile+"is invalid");
}
catch(NoPlayerException e)
{
System.out.println("Can't find a player"+mediaURL);
}
if(player!=null)
{
player.prefetch();
}
}
}


package com.qiu.demo;

import Java.awt.*;
import javax.Swing.*;
import java.awt.event.*;

/**
* 一个封装了LookAndFeel子菜单 可用于改变组件的LookAndFeel 这些LookAndFeel是JRE自带的 LookAndFeel
* 这些组件必须与一个父组件的相 关联,才可更新LookAndFeel
*
* @author QIU_BaiChao
*/
public class JLookAndFeelMenu extends JMenu {
/**
* 默认的菜单名
*/
private static final String defaultMenuName = "LookAndFeel";

/**
* 得到系统的安装的所有LookAndFeel
*/
UIManager.LookAndFeelInfo[] info = UIManager.getInstalledLookAndFeels();

/**
* 按钮组,将一组LookAndFeel的单选按钮放在里面
*/
ButtonGroup buttonGroup = new ButtonGroup();

/**
* 父组件,更新LookAndFeel只能更新
* 在同一个父组件的LookAndFeel
*/
Component parent;

/**
* 构造函数
*
* @param menuName
* 菜单名
* @param parrent
* 父组件,将在同一个父组
* 件容器的所有Component更新LookAndFeel
*/
public JLookAndFeelMenu(String menuName, final Component parent) {
// 生成各个可以选择LookAndFeel的单选按钮子菜单
// generateLookAndFeelSubMenu(parent);
setParentComponent(parent);
// 设置菜单名
this.setText(menuName);
}

/**
* 构造函数 使用默认的菜单名:LookAndFeel
*
* @param parent
* 父组件,将在同一个父组件容器的
* 所有Component更新LookAndFeel
*/
public JLookAndFeelMenu(Component parent) {
this(defaultMenuName, parent);
}

/**
* 默认构造函数 使用默认的菜单名,
* 还需设置父组件方法
* 调用setParentComponent(Component parent)方法
*/
public JLookAndFeelMenu() {
super(defaultMenuName);
}

/**
* 生成LookAndFeel的单选子菜单
*
* @param parent
*/
private void generateLookAndFeelSubMenu(final Component parent) {
for (int i = 0; i < info.length; i ) {
JRadioButtonMenuItem item = new JRadioButtonMenuItem(info[i]
.getName(), i == 0);
final String className = info[i].getClassName();
// 增加事件处理
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evn) {
try {
UIManager.setLookAndFeel(className);
} catch (Exception e) {
e.printStackTrace();
}
// 更新组件的LookAndFeel
SwingUtilities.updateComponentTreeUI(parent);
}
});
buttonGroup.add(item);
add(item);
}
}

/**
* 得到父组


*
* @return
*/
public Component getParentComponent() {
return parent;
}

/**
* 设置父组件
*
* @param parent
*/
public void setParentComponent(Component parent) {
this.parent = parent;
generateLookAndFeelSubMenu(parent);
}

/**
* 演示怎样使用这个LookAndFeel菜单
*/
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// App.centerOfScreen(frame,400,300);
frame.setSize(400, 300);
frame.setLocation(200, 200);
JMenuBar bar = new JMenuBar();
// JMenu menu = new LookAndFeelMenu("外观选择",frame);
JLookAndFeelMenu menu = new JLookAndFeelMenu();
menu.setText("外观选择");
menu.setParentComponent(frame);
bar.add(menu);
frame.getContentPane().add(BorderLayout.NORTH, bar);
frame.getContentPane().add(BorderLayout.CENTER, new JButton("Hello"));
frame.setVisible(true);
}

}



相关文档