java入门必学篇摘要.docx

上传人:b****6 文档编号:4689294 上传时间:2022-12-07 格式:DOCX 页数:19 大小:23.15KB
下载 相关 举报
java入门必学篇摘要.docx_第1页
第1页 / 共19页
java入门必学篇摘要.docx_第2页
第2页 / 共19页
java入门必学篇摘要.docx_第3页
第3页 / 共19页
java入门必学篇摘要.docx_第4页
第4页 / 共19页
java入门必学篇摘要.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

java入门必学篇摘要.docx

《java入门必学篇摘要.docx》由会员分享,可在线阅读,更多相关《java入门必学篇摘要.docx(19页珍藏版)》请在冰豆网上搜索。

java入门必学篇摘要.docx

java入门必学篇摘要

Java入门(11)让程序更动人

摘要

  Java语言提供了对各种多媒体的良好支持,在本章中我们将学习如何在你的Java语言程序中处理图像、声音、字体等资源,让你的程序更加有趣。

  本章目标:

  Java语言提供了对各种多媒体的良好支持,在本章中我们将学习如何在你的Java语言程序中处理图像、声音、字体等资源,让你的程序更加有趣。

  11.1图像

  传授新知

  与其它编程语言不一样,Java语言没有为图像文件提供类于什么图像框的控件(用Java的术语来说,就是类),而是无处不可有图像。

我们可以在标签上,在按钮中,在许许多多普通的GUI部件上显示图像。

  通常,在Java语言中,使用一个图像需要经过三个步骤:

  1.装载图像

  Java是伴随着Internet发展起来的,被认为是最优秀的Internet编程语言,因此我们经常会看到许多细节都在体现这一风格或精神。

  例如,Java语言是通过URL(统一资源定位,UniformResourceLocation,最常见的URL是用来指向WEB页面的)进行文件引用的。

这样的机制,使Java语言引用一个本地文件与引用一个Internet上的文件并没有什么区别。

  我们通过getImage()方法装载图像,这个方法的语法格式如下所示:

publicImagegetImage(Stringurl)

publicImagegetImage(Stringurl,Stringname)

  ¨第一种形式:

直接给出指向文件的URL;

  ¨第二种形式:

通过合并指定的url和后面的name形成新的URL。

  一些提示:

  因为考虑到读者不一定都了解如何使用URL表示本地文件,所以在些给出一个实例,以便大家理解:

file:

/c:

/javastudy/test.jpg

  格式是:

file:

/盘符:

/路径/文件名。

需要注意是,我们使用的是“/”来隔开各个部分,而不是使用Windows下的“”符。

  我们经常需要调用当前目录下的文件,即使是这样,我们也需要写出这个目录的URL,否则将无法找到这个程序。

  这,太痛苦了!

不过,Java也提供了一个十分体贴的方法,让你能够很轻松地获得当前目录的URL:

getCodeBase()

  这样,我们如果要调用当前目录下的1.jpg文件的话,就可以使用语句:

getImage(getCodeBase(),”1.jpg”);

  getImage方法将返回一个Image对象。

所以,我们通常先定义一个Image对象,用来存放装载进来的图像,例如:

Imageimage1=getImage(getCodeBase(),”1.jpg”);

  这样,就将1.jpg装载到image1中了。

  2.生成ImageIcon

  将图像装载进来以后,还不能够直接被程序所使用,我们还要先调用ImageIcon方法将其生成一个ImageIcon:

ImageIcon(Image)

  这个方法将返回一个ImageIcon对象,有了ImageIcon对象后,就可以被使用了。

下面就是一个实例,我们将包含1.jpg的图象的image1对象转成ImageIcon对象icon1:

ImageIconicon1=newImageIcon(image1);

  3.显示图像

  现在,我们就可以显示这个图像了,我们将ImageIcon对象作为参数,创建标签、按钮等部件,就可以显示出这个图像了。

下面我们就分别介绍一下:

  1)标签:

publicJLabel(ImageIconicon);

publicJLabel(Stringtext,ImageIconicon);

  第一个构造器,是让标签中只显示图像,而第二个构造器就可以同时显示文本标签和图像。

可谓图像并茂。

  2)按钮:

publicJButton(ImageIconicon);

publicJButton(Stringtext,ImageIconicon);

  很明显,与标签构造器十分类似。

  注意:

  任何事物都是不断发展的,java.AWT包中提供的部件尚不能很好地包含图像,而更先进的java.Swing包中提供的部件就可以很好地包含图像了。

  实例说明

  下面,我们来构建一个显示图像的程序。

为了大家便于完成这个实例操作,我们选用了一个大家都有的图像文件:

  C:

windowssystemoobeimagescnncterr.jpg文件。

  为了方便操作,大家先将其拷贝到C:

javastudy目录下。

  源程序:

useImage.java

importjava.applet.*;

importjava.awt.*;

importjavax.swing.*;

publicclassuseImageextendsJApplet

{

Imageimage1;

publicvoidinit()

{

JPanelpanel1=(JPanel)getContentPane();

panel1.setLayout(newBorderLayout());

image1=getImage(getCodeBase(),"cnncterr.jpg");

ImageIconicon1=newImageIcon(image1);

JLabelimagelabel=newJLabel(icon1);

panel1.add(imagelabel);

}

}

  将这个程序编译后,运行的结果如下图所示:

  图11-1程序useImage.java的输出

  接下来,我们再来看一个有趣的程序:

  源程序:

useImage2.java

importjava.applet.*;

importjava.awt.*;

importjavax.swing.*;

publicclassuseImage2extendsJApplet

{

Imageimage1,image2;

publicvoidinit()

{

JPanelpanel1=(JPanel)getContentPane();

panel1.setLayout(newBorderLayout());

image1=getImage(getCodeBase(),"ontbvsa.gif");

ImageIconicon1=newImageIcon(image1);

image2=getImage(getCodeBase(),"offtbvsa.gif");

ImageIconicon2=newImageIcon(image2);

JButtonimagebutton=newJButton(icon2);

imagebutton.setPressedIcon(icon1);

panel1.add(imagebutton,BorderLayout.CENTER);

}

}

  这个程序的输出是:

  图11-2程序最初的显示

  图11-3当按下这个按钮时

  这里,使用了一个新的方法,实现了一个特殊的效果!

imagebutton.setPressedIcon(icon1);

  这就是当你按下这个按钮时,就显示icon1所指向的图像。

  自测练习

  1)_____c______包中定义的部件能够直接使用图像。

  a.java.awt.*b.java.swing.*c.javax.swing.*

  2)一个按钮__b______同时拥用文本标签和图像。

  a.不能b.能

  3)按钮中可以直接使用_____a_______对象。

  a.ImageIconb.Imagec.Icon

  4)取得当前目录的URL使用______c_______方法。

  a.getURLbaseb.getURLc.getCodeBase

  5)一个标签____a____同时拥用文本标签和图像。

  a.能b.不能

  6)编写一个程序,在默认情况下,只显示两个按钮:

MasterCard和VisaCard,

  图11-4练习题图

(1)

  当按下MasterCard按钮时,则显示MasterCard的图像:

  图11-5练习题图

(2)

  而按下VisaCard按钮时,显示MVisaCard的图像。

如下图所示:

  图11-6练习题图(3)

  注:

这两幅图分别是c:

windowssystemoobd_gmc.jpg和bgvisa.jpg。

  练习答案

  1)c在java.awt包定义的部件对图像的支持不好;java.swing包是不存在的,应该是javax.swing。

  2)b当然可以。

  3)aImage对象应先转成ImageIcon对象。

  4)c没有什么好解释的,提供的方法名就是getCodeBase()。

  5)a当然可以。

  6)以下是一个实现实例:

  源程序:

lianxi11_1.java

importjava.applet.*;

importjava.awt.*;

importjavax.swing.*;

importjava.awt.event.*;

publicclasslianxi11_1extendsJApplet

{

Imageimage1,image2;

ImageIconicon1,icon2;

JButtonmc,visa;

JLabelimagelabel;

publicvoidinit()

{

Frameframe1=newFrame("lianxi11_1");

frame1.setLayout(newBorderLayout());

image1=getImage(getCodeBase(),"bgmc.jpg");

icon1=newImageIcon(image1);

image2=getImage(getCodeBase(),"bgvisa.jpg");

icon2=newImageIcon(image2);

imagelabel=newJLabel();

frame1.add(imagelabel,BorderLayout.CENTER);

JPanelpanel1=(JPanel)getContentPane();

panel1.setLayout(newGridLayout(1,2));

mc=newJButton("MasterCard");

visa=newJButton("VisaCard");

panel1.add(mc);

panel1.add(visa);

mc.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEventevt)

{

imagelabel.setIcon(icon1);

}

});

visa.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEventevt)

{

imagelabel.setIcon(icon2);

}

});

frame1.add(panel1,BorderLayout.SOUTH);

frame1.pack();

frame1.show();

}

}

  11.2声音

  传授新知

  有时,我们需要在程序中释放声音,我可以在importjava.applet.*包的支持下,让Java程序能够播放WAV、AU和SND格式的声音文件。

  1.装载声音文件

  与引用图像文件一样,我们也要将声音文件装载进来,才能够供Java程序使用。

同样的,我们还是使用URL来定位一个声音文件。

  在Java语言中装载声音文件,是使用getAudioClip方法,其语法格式是:

publicAudioClipgetAudioClip(Stringurl)

publicAudioClipgetAudioClip(Stringurl,Stringname)

  同样的,我们可以调用getCodeBase()方法来获取当前目录的URL,这样就可以很方便地调用当前目录下的声音文件。

例如:

AudioClipclip1=getAudioClip(getCodeBase(),”carbrake.wav)

  注:

carbreak.wav是office97中带的,你可以在c:

windowsmediaoffice97目录中找到,在此假设已拷贝到了c:

javastudy目录中。

  这样,我们就获得了一个AudioClip(声音片段)clip1,这个声音片段中存放的就是声音文件carbreak.wav。

  2.操作声音片段

  使用声音比使用图像要简单得多,我们现在就可以直接对一个AudioClip(声音片段)进行操作了,不再需要转换(图像就得从Image转成ImageIcon)。

  1)播放声音片段:

  声音片段名.play()

  一句话,就是直接调用声音片段对象的play()方法就可以将其播放出来。

  2)停止播放:

  声音片段名.stop()

  很简单吧,play就是播放,stop就是停止,好象在用放音机一样。

  3)循环播放:

  声音片段名.loop()

  有时,我们可能会需要一直播放一段声音,在Java语言中提供了一个很简单的方法来实现,那就是声音片段的loop方法。

  实例说明

  首先将c:

windowsmediaoffice97carbrake.wav拷贝到c:

javastudy目录下,然后输入以下源程序。

  源程序:

useAudio.java

importjavax.swing.*;

importjava.applet.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassuseAudioextendsJApplet

{

AudioClipcarbrake;

publicvoidinit()

{

JPanelpanel1=(JPanel)getContentPane();

panel1.setLayout(newGridLayout(3,1));

carbrake=getAudioClip(getCodeBase(),"carbrake.wav");

JButtonbuttonPlay=newJButton("Play");

JButtonbuttonStop=newJButton("Stop");

JButtonbuttonLoop=newJButton("Loop");

panel1.add(buttonPlay);

panel1.add(buttonStop);

panel1.add(buttonLoop);

buttonPlay.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEventevt)

{

carbrake.stop();

carbrake.play();

}

});

buttonStop.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEventevt)

{

carbrake.stop();

}

});

buttonLoop.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEventevt)

{

carbrake.stop();

carbrake.loop();

}

});

}

}

  这个程序经编译后用appletviewer可以看到如下界面:

  图11-7useAudio.java的程序界面

  当你按下play按钮时,你就会听到一声汽车的刹车声。

而当你按下Loop按钮时,你就会听到边续不断的汽车刹车声。

当你厌倦了的时候,就按下stop按钮,声音就消失了。

  自测练习

  1)在Java语言中,使用_______类来装载声音文件。

  a.Soundb.SoundClipc.AudioClipd.Clip

  2)___________包提供了对声音的支持。

  a.java.awt.*b.javax.swing.*c.java.swing.*d.javax.awt.*

  3)在c:

windowsmedia目录下有一个TheMicrosoftSound.wav,它是Windows启动时的欢迎乐,在c:

windowsmediaoffice97目录下有一个chimes.wav,它是一段十分和谐的音乐。

下面请您编写一个程序,构建两个按钮,第一个是MicrosoftSound,按下时就播放第一个音乐;第二个按钮则是chimes,按下时就播放第二个音乐。

程序界面如下图所示:

  图11-8练习题图

  ____________________________________________________________________

  ____________________________________________________________________

  ____________________________________________________________________

  练习答案

  1)c在Java中,使用AudioClip来装载声音文件。

  2)a

  3)以下是一个程序实例:

  源程序:

lianxi11_2.java

importjavax.swing.*;

importjava.applet.*;

importjava.awt.*;

importjava.awt.event.*;

publicclasslianxi11_2extendsJApplet

{

AudioClipclip1,clip2;

publicvoidinit()

{

JPanelpanel1=(JPanel)getContentPane();

panel1.setLayout(newGridLayout(2,1));

clip1=getAudioClip(getCodeBase(),"TheMicrosoftSound.wav");

clip2=getAudioClip(getCodeBase(),"chimes.wav");

JButtonbutton1=newJButton("MicrosoftSound");

JButtonbutton2=newJButton("Playchime");

panel1.add(button1);

panel1.add(button2);

button1.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEventevt)

{

clip2.stop();

clip1.play();

}

});

button2.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEventevt)

{

clip1.stop();

clip2.play();

}

});

}

}

  11.3改变字体

  传授新知

  不知不觉中,我们已经学习了很多的关于Java的知识了,从字符界面到图形界面,从呆滞的文字到多彩的图像、声音……

  不过,不知道大家注意到没有,我们一直没有改变程序中显示出来的文字的字体!

现在,我们就来补一下这方面的知识。

  字体是一个十分神奇的东西,例如,我们使用了黑体字体现出了各个章节,使用楷体字体现出了一些注释、提示、说明等等。

它使得我们的文本更生动、更直观。

  字体由三种属性决定:

  1)字体名(familyname)

  字体名可以分成两大类:

一种是中文字体,如宋体、楷体、黑体等;另一种是英文字体,如Arial、TimesNewRoman等等;

  小知识:

  对于英文字体中有两个术语:

“等宽字体”与“变宽字体”,等宽字体是指每一英文字母的宽度一样大;而变宽字体则不然,m与l所占的宽度就不同。

  2)大小(size)

  与字体名一样,大小也有两种衡量方式:

一种是五号、六号,号数越小字越大;另一种是磅值(这是一种印刷界的通用单位),如11磅、12磅,它们的值越大,字越大。

不过在Java中只支持后者,也就是磅值(point)。

  3)风格(style)

  如斜体、粗体、下划线等。

在Java中有四种字体风格,由Font类的值来定义。

  ¨Font.PLAIN(普通)

  ¨Font.BOLD(加粗)

  ¨Font.ITALIC(斜体)

  ¨Font.BOLD+Font.ITALIC(粗斜体)

  也就是说,在Java语言中并不支持下划线这种风格。

  好了,我们已经知道了字体的详细内容,下面我们来看一下如何在程序中设置、改变字体?

很简单,我们先使用以下构造器构造一个字体对象:

publicFont(StringfamilyName,intstyle,intsize)

  然后,调用对象的setFont方法来设置字体:

publicvoidsetFont(Fontfont)

  正如上面所讲的一样,我们能够很轻松地设置风格与大小,但可以选择哪些字体名呢?

我无法回答这个问题,谁也无法回答这个问题!

因为这个问题的答案掌握在你的系统中!

也就是能够使用哪些字体,完全取决于

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1