我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

可爱java代码 有趣的Java代码

Java中实现播放声音

java不支持播放mp3格式的声间文件,你把它转成au格式的就能播放了

创新互联是一家专注于网站建设、成都做网站与策划设计,华容网站建设哪家好?创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:华容等地区。华容做网站价格咨询:13518219792

可以看看下面:

Java对多媒体的支持

4.2 图像与声音

其它语言相比较,如果说Java对图形和文本媒体的支持并不占明显优势的话,那么Java对图像与声音媒体的支持真可谓是技高一筹,显示图像与播放声音就如同显示一行文本一样方便。同时,正由于在Java动画中灵活的运用图像和声音媒体,才使得Web页面更具魅力。

4.2.1 图像文件的显示

正如上一节所介绍的,Graphics类中确实提供了不少绘制图形的方法,但如果用它们在applet运行过程中实时地绘制一幅较复杂的图形(例如一条活泼可爱的小狗),就好比是在用斧头和木块去制造航天飞机。因此,对于复杂图形,大部分都事先用专用的绘图软件绘制好,或者是用其它截取图像的工具(如扫描仪、视效卡等)获取图像的数据信息,再将它们按一定的格式存入图像文件。applet运行时,只要找到图像文件存贮的位置,将它装载到内存里,然后在适当的时机将它显示在屏幕上就可以了。

1.图像文件的装载

Java目前所支持的图像文件格式只有两种,它们分别是GIF和JPEG格式(带有.GIF、.JPG、.JPEG后缀名的文件)。因此若是其它格式的图像文件,就先要将它们转换为这两种格式。能转换图像格式的软件有很多,如PhotoStyler等。

Applet类中提供了getImage( )方法用来将准备好的图像文件装载到applet中,但我们必须首先指明图像文件所存贮的位置。由于Java语言是面向网络应用的,因此文件的存贮位置并不局限于本地机器的磁盘目录,而大部分情况是直接存取网络中Web服务器上的图像文件,因而,Java采用URL(Universal Resource Location,统一资源定位器)来定位图像文件的网络位置。因此,Java专门提供了URL类来管理URL信息(关于该类的详细介绍见下一章)。

表示一个URL信息可分为两种形式:

一种称为绝对URL形式,它指明了网络资源的全路径名。如:

绝对URL:“”

另一种称为相对URL形式,分别由基准URL(即base URL)再加上相对于基准URL下的相对URL这两部分组成,例如上面的例子可表示为:

基准URL:“”

相对URL:“images/m1.gif”

现在,我们可以来看一下getImage( )方法的调用格式了:

Image getImage(URL url)

Image getImage(URL url, String name)

我们可以发现,这两种调用格式的返回值都是Image对象。确实,Java特别提供了java.awt.Image类来管理与图像文件有关的信息,因此执行与图像文件有关的操作时不要忘了import这个类。getImage( )方法的第一种调用格式只需一个URL对象作为参数,这便是绝对URL。而后一种格式则带有两个参数,第一个参数给出的URL对象是基准URL,第二个参数是字符串类型,它描述了相对于基准URL下的路径和文件名信息,因此这两个参数的内容综合在一起就构成了一个绝对URL。例如,下面两种写法所返回的结果是一样的:

Image img=getImage(new URL("");

Image img=getImage(new URL(""),"images/m1.gif");

表面看来,好象第一种调用格式较方便一些,但实际上第二种调用格式用得更普遍,因为这种格式更具灵活性。原来,Applet类中提供了两个方法来帮助我们方便地获取基准URL对象,它们的调用格式如下:

URL getDocumentBase( )

URL getCodeBase( )

其中getDocumentBase( )方法返回的基准URL对象代表了包含该applet的HTML文件所处的目录,例如该文件贮存在“”中,则该方法就返回“”路径。而getCodeBase( )方法返回的基准URL对象代表了该applet文件(.class文件)所处的目录。它是根据HTML文件的"APPLET"标记中的CODEBASE属性值计算出来的,若该属性没有设置,则同样返回该HTML文件所处的目录。

好了,现在我们应该可以感受到基准URL的灵活性了吧。只要我们写下语句:

Image img = getImage(getDocumentBase( ),"images/m1.gif");

那么即使整个imgsample目录移到别处任何地方,也可以正确装载图像文件,而采用对于绝对URL形式则需要重新修改applet代码并重新编译。

2. 图像文件的显示

getImage( )方法仅仅是将图像文件从网络上装载进来,交由Image对象管理。那我们样把得到的Image对象中的图像显示在屏幕上呢?这又要回到我们的老朋友Graphics类来了,因为Graphics类提供了一个drawImage( )方法,它能完成将Image对象中的图像示在屏幕的特定位置上,就象显示文本一样方便。drawImage( )方法的调用格式如下:

boolean drawImage(Image img, int x, int y, ImageObserver observer)

其中img参数就是要显示的Image对象。x和y参数是该图像左上角的坐标值。observer参数则是一个ImageObserver接口(interface),它用来跟踪图像文件装载是否已经完成的情况,通常我们都将该参数置为this,即传递本对象的引用去实现这个接口。

除了将图像文件照原样输出以外,drawImage( )方法的另外一种调用格式还能指定图像显示的区域大小:

boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)

这种格式比第一种格式多了两个参数width和height,即表示图像显示的宽度和高度。若实际图像的宽度和高度与这两个参数值不一样时,Java系统会自动将它进行缩放,以适合我们所定的矩形区域。

有时,我们为了不使图像因缩放而变形失真,可以将原图的宽和高均按相同的比例进行缩小或放大。那么怎样知道原图的大小呢?只需调用Image类中的两个方法就可以分别得到原图的宽度和高度。它们的调用格式如下:

int getWidth(ImageObserver observer)

int getHeight(ImageObserver observer)

同drawImage( )方法一样,我们通常用this作为observer的参数值。

下面的程序段给出了一个显示图像文件的例子,其显示结果如图4-14所示。

import java.awt.Graphics;

import java.awt.Image;

public class Images extends java.applet.Applet{

Image img;

public void init(){

img=getImage(getCodeBase(),"man.gif");

}

public void paint(Graphics g){

int w=img.getWidth(this);

int h=img.getHeight(this);

g.drawImage(img,20,10,this); //原图

g.drawImage(img,200,10,w/2,h/2,this); //缩小一半

g.drawImage(img,20,200,w*2,h/3,this); //宽扁图

g.drawImage(img,350,10,w/2,h*2,this); //瘦高图

}

}

图4-14 显示图像文件

4.2.2 声音文件的播放

对声音媒体的直接支持可以说是Java的一大特色,尤其是在动画中配上声音效果,就可以使人在视觉上和听觉上均得到美的享受,那才叫过瘾。Java中播放声音文件与显示图像文件一样方便,同样只需要先将声音文件装载进来,然后播放就行了。

Java目前支持的声音文件只有一种格式,那就是SUN公司的AU格式(.AU文件),也称为u-law格式。由于AU格式的声音仅有8KHz的采样频率且不支持立体声效果,所以音质不算太好。唯一的好处就是AU声音文件的尺寸比其它格式小,有利于网上传输。一般,我们较熟悉的大都是WAV格式的声音文件,因此必须先将它们转换为AU格式(可以选用Goldwave软件来进行这种格式转换)。

声音文件准备好以后,就可以考虑将它装载进来并播放。在Applet类中提供的play( )方法可以将声音文件的装载与播放一并完成,其调用格式如下:

void play(URL url)

void play(URL url, String name)

可见,play( )方法的调用格式与getImage( )方法是完全一样的,也采用URL来定位声音文件。例如,某声音文件audio.au与applet文件存放在同一目录下,可以这样写:

play(getCodeBase( ),"audio.au");

一旦play( )方法装载了该声音文件,就立即播放。如果找不到指定URL下的声音文件,play( )方法不返回出错信息,只是听不到想听的声音而已。

由于play( )方法只能将声音播放一遍,若想循环播放某声音作为背景音乐,就需要用到功能更强大的AudioClip类,它能更有效地管理声音的播放操作。因为它被定义在java.applet程序包中,所以使用该类的话,不要忘了在程序头部加上:

import java.applet.AudioClip;

为了得到AudioClip对象,我们可以调用Applet类中的getAudioClip( )方法。它能装载指定URL的声音文件,并返回一个AudioClip对象,其调用格式如下:

AudioClip getAudioClip(URL url)

AudioClip getAudioClip(URL url, String name)

得到AudioClip对象以后,就可以调用AudioClip类中所提供的各种方法来操作其中的声音数据,这些方法如表4-4所示。

如果getAudioClip( )方法没有找到所指定的声音文件,就会返回null值。所以,在调用表4-4中所列的方法前,应该先检查一下得到的AudioClip对象不是null,因为在null对象上调用上述方法将导致出错。

如果需要的话,我们还可以在applet中同时装载几个声音文件来一起播放,到时候,这些声音将混合在一起,就象二重奏一样。另外还有一点要说明的是,如果我们使用AudioClip对象的loop( )方法来重复播放背景音乐时,千万不要忘记在适当的时候调用AudioClip对象的stop( )方法来结束放音,否则的话,即使用户离开这一Web页面,该声音也不会停止,这无疑将会惹恼用户。因此,一般我们都在applet的stop( )方法中添上停止播放的代码。

例如,下面这段程序将播放两段声音,一段是连续播放的背景音乐,另一段是讲话录音。

import java.applet.AudioClip;

public class Audios extends java.applet.Applet{

AudioClip bgmusic,speak;

public void init(){

bgmusic=getAudioClip(getDocumentBase(),"space.au");

speak=getAudioClip(getDocumentBase(),"intro.au");

}

public void start(){

if(bgmusic!=null)

bgmusic.loop();

if(speak!=null)

speak.play();

}

public void stop(){

if(bgmusic!=null)

bgmusic.stop(); //关闭背景音乐,切记。

}

}

java中动物特性的面向对象描述

这个没有什么创新,只是有可能写法不一样而已。但基本思路都是这样写的

测试类用到了多态

import java.util.ArrayList;

import java.util.List;

public class Test {// 测试类

public static void main(String[] args) throws Exception {

ListAnimal animals=new ArrayListAnimal();

animals.add(new Dog());//一只狗

animals.add(new Cat());//一只猫

animals.add(new Frog());//一只青蛙

for (Animal animal : animals) {//遍历

System.out.println(animal);//一个动物的描述

animal.say();//打招呼

animal.happy();//情绪好

animal.afraid();//害怕

System.out.println("------------可爱的分割线------------");

}

}

}

class Animal {

boolean isLusheng = false;

boolean isShuisheng = false;

boolean isRoushi = false;

boolean isBuru = false;

public void say() {

}

public void happy() {

}

public void afraid() {

}

public String toString() {

return (isLusheng ? "是" : "非") + "陆生,"

+ (isShuisheng ? "是" : "非") + "水生,"

+(isRoushi ? "是" : "非") + "肉食,"

+(isBuru ? "是" : "非") + "哺乳";

}

}

class Dog extends Animal {

public Dog() {

isLusheng = true;

isRoushi = true;

isBuru = true;

}

public void say() {

System.out.println("摇摇尾巴");

}

public void happy() {

System.out.println("旺旺叫");

}

public void afraid() {

System.out.println("呜呜");

}

}

class Cat extends Animal {

public Cat() {

isLusheng = true;

isRoushi = true;

isBuru = true;

}

public void say() {

System.out.println("喵~");

}

public void happy() {

System.out.println("咕噜咕噜");

}

public void afraid() {

System.out.println("嘶嘶");

}

}

class Frog extends Animal {

boolean isRuansheng=true;

public Frog() {

isLusheng = true;

isShuisheng = true;

}

public void happy() {

System.out.println("呱呱呱");

}

public void afraid() {

System.out.println("扑通一声跳入水中");

}

public String toString() {

return super.toString()+","

+(isRuansheng ? "是" : "非") + "卵生";

}

}

有问题追问,或HI我

我写的这个java代码,当定义dog类的时候总出错,怎么回事?

先把这里的dog类注释掉,然后查看程序Dog wangwang = new Dog("wangwang",15);中dog的定义是否存在。(右键Dog,查看定义)

用java 编写程序写出简单的工厂模式?

java中工厂模式分为:

简单工厂模式(Simple Factory) 

2. 工厂方法模式(Factory Method) 

3. 抽象工厂模式(Abstract Factory)

每种方法的实现不同

提供一个简单工厂模式的案例:

public abstract class Woman {

private String mySkill;

public String getMySkill() {

return mySkill;

}

public Woman() {

//System.out.println("我是女人");

}

public void setMySkill(String mySkill) {

this.mySkill = mySkill;

}

}

----------------------------

public class LovelinessWoman extends Woman{

/*

* 可爱型女人

*/

public LovelinessWoman()

{

String mySkill="撒过娇、出过轨、勾引领导下过水";

  this.setMySkill(mySkill);

}

}

-----------------------------

public class SteelinessWoman extends Woman{

/*

* 冷酷型女人

*/

public SteelinessWoman()

{

String mySkill="装过神、弄过鬼,跟别人老公亲过嘴";

  this.setMySkill(mySkill);

}

}

--------------------------------------

public class WomanMakeFactory {

public Woman findWoman(int typeID) {

switch (typeID) {

case 1:

return new LovelinessWoman();

case 2:

return new VirtuousWoman();

case 3:

return new SteelinessWoman();

default:

return null;

}

}

public Woman findWoman(String type) throws ClassNotFoundException, InstantiationException, IllegalAccessException {

/*

* Type t = Type.GetType("SimpleFactory." + type);

* Woman wm =

* (Woman)Activator.CreateInstance(t); return wm;

*/

String string="cn.jbit.design.simplefactory."+type;

Class c = Class.forName(string);

Woman wm = (Woman) c.newInstance();

return wm;

}

}

-------------------------

调用

public class Test2 {

/**

* @param args

* @throws IllegalAccessException

* @throws InstantiationException

* @throws ClassNotFoundException

*/

public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {

Scanner input=new Scanner(System.in);

boolean sel=false;

do {

System.out.println("请选择你要找的女人的类型");

System.out.println("LovelinessWoman:可爱型女人 VirtuousWoman:善良型女人 SteelinessWoman:冷酷型女人");

String typeid=input.next();

       WomanMakeFactory factory = new WomanMakeFactory();

       Woman wm=factory.findWoman(typeid);

       System.out.println("该类型女人的新标准:");

       System.out.println(wm.getMySkill());

     

       System.out.println("还想看看别的类型吗?y代表想,n代表再也不想了");

     

       sel=input.next().equals("y");

} while (sel);

}

}

java编程题 希望大家能够帮助我一下,谢谢?

package book;

/**

* @Author: Cool_Wu

* @Date: 2020-12-07 20:18

*/

public class Book {

private String name;

private String num;

private String author;

private double price;

private String publishing_House;

private String publication_Date;

public Book() {}

public Book(String name, String num, String author, double price, String publishing_House, String publication_Date) {

 this.name = name;

 this.num = num;

 this.author = author;

 this.price = price;

 this.publishing_House = publishing_House;

 this.publication_Date = publication_Date;

}

@Override

public String toString() {

 return "图书信息:\n----------------------" +

         "\n书名:" + name +

         "\n书号:" + num +

         "\n作者:" + author +

         "\n单价:" + price +

         "\n出版社:" + publishing_House +

         "\n出版日期:" + publication_Date +

         "\n----------------------\n";

}

}

package book;

public class Test {

public static void main(String[] args) {

 Book book1 = new Book("百年孤独","10000","加西亚·马尔克斯",40.00,"南海出版公司","2017年08月");

 System.out.println(book1);

 Book book2 = new Book("时间简史","10086","史蒂芬·霍金",22.50,"湖南科技出版社","2014年06月");

 System.out.println(book2);

}

}

运行结果

编写一个JAVA程序

为了在您的机器上配置起一个Java开发环境——您将使用一个“开发环境”来“开发”(编写)程序——您需要完成以下这些步骤:

1.下载一个包含Java开发环境(编译器和其他工具)的大文件。点击“下载J2SE SDK”链接下载SDK(软件开发工具包)软件。网页会显示一个许可协议。点击“接受”。选择您的操作系统,然后将文件保存到下载目录中。这是一个巨大的文件,用电话调制解调器下载需要好几个小时。接下来的两个文件也很大。

2.下载一个包含Java文档的大文件。选择操作系统后点击SDK1.4.1文档的链接。

3.如果您的机器上还没有安装WinZip(或可执行相同功能的程序),那么您需要下载一个包含WinZip的大文件并安装之。如果您的机器上没有安装某个的版本的WinZip或其他解压缩软件,下载WinZip的试用版。运行EXE文件安装。很快我们将使用它来安装文档。

4.安装Java开发环境。运行第一步下载的j2sdk-1_4_1-*.exe文件。他将自动解压并安装开发工具包。

5.安装文档。阅读安装说明文档。它会要求您将文档文件移至刚才开发工具包的安装目录。将文档解压缩,文件就会被安排到适当的位置。

6.调整环境变量。按照此页的要求,您需要改变路径变量。最简单的办法是打开一个MS-DOS窗口键入PATH看看当前的路径变量是什么,然后用记事本打开autoexec.bat按要求修改PATH环境变量。

7.全面测试。现在您应该可以打开另一个MS-DOS窗口并键入javac了。如果一切设置妥当,那么您将看到屏幕将输出两行文字告诉您如何使用javac。这意味着一切已经准备就绪了。如果您看到“错误的命令或文件名”这条消息,则说明还没有准备好。请重新阅读安装说明检查哪里出了问题。确定PATH被正确设置并可用。回头重新阅读上面的步骤,问题不解决不要轻易放弃。现在您已自豪地拥有一台能够编译Java程序的机器了。您已经准备好开始编写软件了!

顺便指出,刚才您解压缩的内容包括一个demo(演示)目录,其中包含许多精致的例子。所有的例子都可以立即执行,所以您不妨找到这个目录试运行一下其中的某些例子。许多例子都会发声,所以请打开扬声器。要运行例子,找到名如example1.html的网页文件并使用您常用的浏览器打开即可。

您的第一个程序将是小巧可爱的。它将建立一个绘图区域并在其上绘制一条对角线。创建此程序您需要:

1.打开记事本键入(或复制粘贴)程序 。建立一个新目录以保存程序。打开记事本(或其他可以创建TXT文件的文本编辑器)。将范例程序录入或复制粘贴到记事本窗口中。切记:输入程序的大小写敏感。因此必须按照范例程序中字母的大小写输入。重审以上编程步骤。如果录入内容和范例程序不是完全一致,则程序将无法正常运行。

2.保存程序 。将文件在第一步创建的路径下保存,文件名为FirstApplet.java。文件名大小写敏感。请确保字母“F”和“A”大写,其他字母小写,如前所示。

3.使用Java编译器编译程序生成一个Java程序 。

打开一个MS-DOS窗口。改变至包含FirstApplet.java的路径下(cd),键入:

javac FirstApplet.java

记住大小写敏感!或者编译成功,这时屏幕不输出任何信息,或者有错误发生。若没有错误,则会在目录里生成一个名为FirstApplet.class的文件与FirstApplet.java并列。

(请确保程序保存的文件名为FirstApplet.java而不是FirstApplet.java.txt。最简单的办法就是在MS-DOS窗口下键入dir然后查看文件名。若扩展名是.txt 则请重命名文件去掉此扩展名。也可以运行Windows资源管理器在“查看”菜单下点击“选项”。确保“隐藏已注册的MS-DOS文件扩展名”选项处于未选中状态,然后在资源管理器中查看文件名。若需要则将文件改名。)

4.排除问题。若有问题产生则想办法解决。将您的程序与上面的范例程序对比,使之完全相同。修改过程中不断编译程序,直到没有错误发生。

5.建立一个HTML网页“包含”刚创建的Java程序 。

创建一个HTML页面来包含小程序。另开一个记事本窗口。录入下面的内容:

将此文件存于同一目录中,文件名为applet.htm。

1.运行Java程序 。

在您的MS-DOS窗口中键入:

appletviewer applet.htm

应该可以看见一条从左上角到右下角的对角线:(如上图所示)

将小程序查看器的窗口拉大一些以查看整条对角线。您也可以将此HTML网页装载到任何现用的浏览器中,如Netscape Navigator或微软IE,看到的结果是大致相同的。

使用Java语言编程就需要一个Java编译器。下一节将指导您下载并安装一个编译器。一旦有了编译器我们就可以开始学习编程了。下载和安装过程将会持续几个小时,大部分时间用来下载几个很大的文件。您还需要有大约40兆字节的空闲磁盘空间(开始前请确定有足够的空间)。

这里是本节的示范程序:

import java.awt.Graphics;

public class FirstApplet extends java.applet.Applet

{

public void paint(Graphics g)

{

g.drawLine(0, 0, 200, 200);

}

}


新闻标题:可爱java代码 有趣的Java代码
文章URL:http://mswzjz.cn/article/hjiess.html

其他资讯