博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java第五次作业
阅读量:6925 次
发布时间:2019-06-27

本文共 2968 字,大约阅读时间需要 9 分钟。

import javax.media.;

import java.awt.;
import java.awt.event.;
class MediaPlayer extends Frame implements ActionListener,
ControllerListener, ItemListener
{
Player player;
Component vc, cc;
boolean first = true, loop = false;
String currentDirectory;
MediaPlayer (String title)
{
super (title);
addWindowListener
(new WindowAdapter ()
{
public void windowClosing (WindowEvent e) {
// 用户点击窗口系统菜单的关闭按钮
// 调用dispose以执行windowClosed
dispose ();
} public void windowClosed (WindowEvent e) {
if (player != null) player.close ();
System.exit (0);
}
});
Menu m = new Menu ("文件");
MenuItem mi = new MenuItem ("打开");
mi.addActionListener (this);
m.add (mi);
m.addSeparator ();
CheckboxMenuItem cbmi = new CheckboxMenuItem ("循环", false);
cbmi.addItemListener (this);
m.add (cbmi);
m.addSeparator ();
mi = new MenuItem ("退出");
mi.addActionListener (this);
m.add (mi);
MenuBar mb = new MenuBar ();
mb.add (m);
setMenuBar (mb);
setSize (200, 200);
setVisible (true);
}
public void actionPerformed (ActionEvent e)
{
if (e.getActionCommand ().equals ("退出"))
{
// 调用dispose以便执行windowClosed
dispose ();
return;
}
FileDialog fd = new FileDialog (this, "打开媒体文件",
FileDialog.LOAD);
fd.setDirectory (currentDirectory);
fd.show ();
// 如果用户放弃选择文件,则返回
if (fd.getFile () == null) return;
currentDirectory = fd.getDirectory ();
if (player != null)
player.close ();
try
{
player = Manager.createPlayer (new MediaLocator ("file:" + fd.getDirectory () + fd.getFile ()));
}
catch (java.io.IOException e2)
{
System.out.println (e2);
return;
}
catch (NoPlayerException e2)
{
System.out.println ("不能找到播放器.");
return;
}
if (player == null)
{
System.out.println ("无法创建播放器.");
return;
}
first = false;
setTitle (fd.getFile ());
player.addControllerListener (this);
player.prefetch ();
}
public void controllerUpdate (ControllerEvent e)
{
if (e instanceof ControllerClosedEvent)
{
if (vc != null)
{
remove (vc);
vc = null;
}
if (cc != null)
{
remove (cc);
cc = null;
}
return;
}
if (e instanceof EndOfMediaEvent)
{
if (loop)
{
player.setMediaTime (new Time (0));
player.start ();
}
return;
}
if (e instanceof PrefetchCompleteEvent)
{
player.start ();
return;
}
if (e instanceof RealizeCompleteEvent)
{
vc = player.getVisualComponent ();
if (vc != null)
add (vc);
cc = player.getControlPanelComponent ();
if (cc != null)
add (cc, BorderLayout.SOUTH);
pack ();
}
}
public void itemStateChanged (ItemEvent e)
{
loop = !loop;
}
public void paint (Graphics g)
{
if (first)
{
int w = getSize ().width;
int h = getSize ().height;
g.setColor (Color.blue);
g.fillRect (0, 0, w, h);
Font f = new Font ("DialogInput", Font.BOLD, 16);
g.setFont (f);
FontMetrics fm = g.getFontMetrics ();
int swidth = fm.stringWidth ("
** 欢迎 ");
g.setColor (Color.white);
g.drawString ("
 欢迎 ***",
(w - swidth) / 2,
(h + getInsets ().top) / 2);
}
super.paint (g);
}
public void update (Graphics g)
{
paint (g);
}
public static void main (String [] args) {
new MediaPlayer ("媒体播放器");
} }

转载于:https://www.cnblogs.com/ZC962464/p/5398766.html

你可能感兴趣的文章
中国开发者无条件退款被人恶意利用 跪求同胞放过
查看>>
布局混合云,互联港湾为云计算未来加码
查看>>
东芝出售NAND业务进展:博通出价179亿美元,紫光否认竞标
查看>>
AMD AM4主板首曝:A320芯片组 惠普打造
查看>>
“数据中心绿色等级认证”将在我国首先开展
查看>>
惠普企业Q4营收124.78亿美元 净利3.02亿美元
查看>>
中国工程师许家强承认窃取了IBM源代码 或被判重罪
查看>>
Apache Jackrabbit Oak 1.7.0 发布,内容资源库
查看>>
前微软员工因外泄 Windows 8 代码被逮捕
查看>>
《51单片机应用开发从入门到精通》——1.3 Keil uVision2集成开发环境
查看>>
Adobe Flash 正走向自己的末日
查看>>
《Effective Debugging:软件和系统调试的66个有效方法》一第11条:修改完代码之后,要能够尽快看到结果...
查看>>
《SolidWorks 2013中文版完全自学手册》——第 2 章 草图绘制基础 2.1 草图绘制的基本知识...
查看>>
超级简单的 AngularJS 应用 —— 实时创建 vCard
查看>>
《UNIX环境高级编程(第3版)》——1.9 信号
查看>>
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一3.1.1 在投入生产之前测试变化...
查看>>
《MATLAB神经网络超级学习手册》——第1章 MATLAB简介 1.1 MATLAB的发展
查看>>
美媒:微信“小程序”正改变智能手机 挑战 iOS 和安卓
查看>>
停用 Flash,“HTML5 默认支持”推广计划时间表
查看>>
《IP组播(第1卷)》一2.5 网关路由器上的IGMP
查看>>