📄 java入门(11) 让程序更动人.htm
字号:
<BR><BR> 1)___________包中定义的部件能够直接使用图像。 <BR><BR> a.java.awt.*
b.java.swing.* c.javax.swing.* <BR><BR> 2) 一个按钮________同时拥用文本标签和图像。
<BR><BR> a.不能 b.能 <BR><BR> 3) 按钮中可以直接使用____________对象。
<BR><BR> a.ImageIcon b.Image c.Icon <BR><BR> 4)
取得当前目录的URL使用_____________方法。 <BR><BR> a.getURLbase b.getURL c.getCodeBase
<BR><BR> 5) 一个标签________同时拥用文本标签和图像。 <BR><BR> a.能 b.不能 <BR><BR> 6)
编写一个程序,在默认情况下,只显示两个按钮:MasterCard和VisaCard, <BR><BR><BR> 图11-4 练习题图(1)
<BR><BR> 当按下MasterCard按钮时,则显示MasterCard的图像: <BR><BR><BR> 图11-5 练习题图(2)
<BR><BR> 而按下VisaCard按钮时,显示M VisaCard的图像。如下图所示: <BR><BR><BR> 图11-6
练习题图(3) <BR><BR> 注:这两幅图分别是c:windowssystemoobdgmc.jpg和bgvisa.jpg。
<BR><BR> 练习答案 <BR><BR> 1)c
在java.awt包定义的部件对图像的支持不好;java.swing包是不存在的,应该是javax.swing。 <BR><BR> 2)b
当然可以。 <BR><BR> 3)a Image对象应先转成ImageIcon对象。 <BR><BR> 4)c
没有什么好解释的,提供的方法名就是getCodeBase()。 <BR><BR> 5)a 当然可以。 <BR><BR> 6)以下是一个实现实例:
<BR><BR> 源程序:lianxi11_1.java <BR><BR><BR>import java.applet.*; <BR>import
java.awt.*; <BR>import javax.swing.*; <BR>import java.awt.event.*;
<BR>public class lianxi11_1 extends JApplet <BR>{ <BR>Image image1,image2;
<BR>ImageIcon icon1,icon2; <BR>JButton mc,visa; <BR>JLabel imagelabel;
<BR>public void init() <BR>{ <BR>Frame frame1=new Frame("lianxi11_1");
<BR>frame1.setLayout(new BorderLayout());
<BR>image1=getImage(getCodeBase(),"bgmc.jpg"); <BR>icon1=new
ImageIcon(image1); <BR>image2=getImage(getCodeBase(),"bgvisa.jpg");
<BR>icon2=new ImageIcon(image2); <BR>imagelabel=new JLabel();
<BR>frame1.add(imagelabel,BorderLayout.CENTER); <BR>JPanel
panel1=(JPanel)getContentPane(); <BR>panel1.setLayout(new
GridLayout(1,2)); <BR>mc=new JButton("MasterCard"); <BR>visa=new
JButton("VisaCard"); <BR>panel1.add(mc); <BR>panel1.add(visa);
<BR>mc.addActionListener(new ActionListener() <BR>{ <BR>public void
actionPerformed(ActionEvent evt) <BR>{ <BR>imagelabel.setIcon(icon1);
<BR>} <BR>}); <BR>visa.addActionListener(new ActionListener() <BR>{
<BR>public void actionPerformed(ActionEvent evt) <BR>{
<BR>imagelabel.setIcon(icon2); <BR>} <BR>});
<BR>frame1.add(panel1,BorderLayout.SOUTH); <BR>frame1.pack();
<BR>frame1.show(); <BR>} <BR>} <BR><BR><BR><BR> 11.2 声音 <BR><BR> 传授新知
<BR><BR> 有时,我们需要在程序中释放声音,我可以在import
java.applet.*包的支持下,让Java程序能够播放WAV、AU和SND格式的声音文件。 <BR><BR> 1.装载声音文件
<BR><BR> 与引用图像文件一样,我们也要将声音文件装载进来,才能够供Java程序使用。同样的,我们还是使用URL来定位一个声音文件。
<BR><BR> 在Java语言中装载声音文件,是使用getAudioClip方法,其语法格式是: <BR><BR><BR>public
AudioClip getAudioClip(String url) <BR>public AudioClip
getAudioClip(String url,String name)
<BR><BR><BR><BR> 同样的,我们可以调用getCodeBase()方法来获取当前目录的URL,这样就可以很方便地调用当前目录下的声音文件。例如:
<BR><BR><BR>AudioClip clip1=getAudioClip(getCodeBase(),”carbrake.wav)
<BR><BR><BR><BR> 注:carbreak.wav是office97中带的,你可以在c:windowsmediaoffice97目录中找到,在此假设已拷贝到了c:javastudy目录中。
<BR><BR> 这样,我们就获得了一个AudioClip(声音片段)clip1,这个声音片段中存放的就是声音文件carbreak.wav。
<BR><BR> 2.操作声音片段
<BR><BR> 使用声音比使用图像要简单得多,我们现在就可以直接对一个AudioClip(声音片段)进行操作了,不再需要转换(图像就得从Image转成ImageIcon)。
<BR><BR> 1) 播放声音片段: <BR><BR> 声音片段名.play()
<BR><BR> 一句话,就是直接调用声音片段对象的play()方法就可以将其播放出来。 <BR><BR> 2) 停止播放:
<BR><BR> 声音片段名.stop() <BR><BR> 很简单吧,play就是播放,stop就是停止,好象在用放音机一样。
<BR><BR> 3) 循环播放: <BR><BR> 声音片段名.loop()
<BR><BR> 有时,我们可能会需要一直播放一段声音,在Java语言中提供了一个很简单的方法来实现,那就是声音片段的loop方法。
<BR><BR> 实例说明
<BR><BR> 首先将c:windowsmediaoffice97carbrake.wav拷贝到c:javastudy目录下,然后输入以下源程序。
<BR><BR> 源程序:useAudio.java <BR><BR><BR>import javax.swing.*; <BR>import
java.applet.*; <BR>import java.awt.*; <BR>import java.awt.event.*;
<BR>public class useAudio extends JApplet <BR>{ <BR>AudioClip carbrake;
<BR>public void init() <BR>{ <BR>JPanel panel1=(JPanel)getContentPane();
<BR>panel1.setLayout(new GridLayout(3,1));
<BR>carbrake=getAudioClip(getCodeBase(),"carbrake.wav"); <BR>JButton
buttonPlay=new JButton("Play"); <BR>JButton buttonStop=new
JButton("Stop"); <BR>JButton buttonLoop=new JButton("Loop");
<BR>panel1.add(buttonPlay); <BR>panel1.add(buttonStop);
<BR>panel1.add(buttonLoop); <BR>buttonPlay.addActionListener(new
ActionListener() <BR>{ <BR>public void actionPerformed(ActionEvent evt)
<BR>{ <BR>carbrake.stop(); <BR>carbrake.play(); <BR>} <BR>});
<BR>buttonStop.addActionListener(new ActionListener() <BR>{ <BR>public
void actionPerformed(ActionEvent evt) <BR>{ <BR>carbrake.stop(); <BR>}
<BR>}); <BR>buttonLoop.addActionListener(new ActionListener() <BR>{
<BR>public void actionPerformed(ActionEvent evt) <BR>{
<BR>carbrake.stop(); <BR>carbrake.loop(); <BR>} <BR>}); <BR>} <BR>}
<BR><BR><BR><BR> 这个程序经编译后用appletviewer可以看到如下界面: <BR><BR><BR> 图11-7
useAudio.java的程序界面
<BR><BR> 当你按下play按钮时,你就会听到一声汽车的刹车声。而当你按下Loop按钮时,你就会听到边续不断的汽车刹车声。当你厌倦了的时候,就按下stop按钮,声音就消失了。
<BR><BR> 自测练习 <BR><BR> 1) 在Java语言中,使用_______类来装载声音文件。 <BR><BR> a.Sound
b.SoundClip c.AudioClip d.Clip <BR><BR> 2) ___________包提供了对声音的支持。
<BR><BR> a.java.awt.* b.javax.swing.* c.java.swing.* d.javax.awt.*
<BR><BR> 3) 在c:windowsmedia目录下有一个The Microsoft
Sound.wav,它是Windows启动时的欢迎乐,在c:windowsmediaoffice97目录下有一个chimes.wav,它是一段十分和谐的音乐。下面请您编写一个程序,构建两个按钮,第一个是Microsoft
Sound,按下时就播放第一个音乐;第二个按钮则是chimes,按下时就播放第二个音乐。程序界面如下图所示: <BR><BR><BR> 图11-8
练习题图
<BR><BR> ____________________________________________________________________
<BR><BR> ____________________________________________________________________
<BR><BR> ____________________________________________________________________
<BR><BR> 练习答案 <BR><BR> 1)c 在Java中,使用AudioClip来装载声音文件。 <BR><BR> 2)a
<BR><BR> 3)以下是一个程序实例: <BR><BR> 源程序:lianxi11_2.java <BR><BR><BR>import
javax.swing.*; <BR>import java.applet.*; <BR>import java.awt.*; <BR>import
java.awt.event.*; <BR>public class lianxi11_2 extends JApplet <BR>{
<BR>AudioClip clip1,clip2; <BR>public void init() <BR>{ <BR>JPanel
panel1=(JPanel)getContentPane(); <BR>panel1.setLayout(new
GridLayout(2,1)); <BR>clip1=getAudioClip(getCodeBase(),"The Microsoft
Sound.wav"); <BR>clip2=getAudioClip(getCodeBase(),"chimes.wav");
<BR>JButton button1=new JButton("Microsoft Sound"); <BR>JButton
button2=new JButton("Play chime"); <BR>panel1.add(button1);
<BR>panel1.add(button2); <BR>button1.addActionListener(new
ActionListener() <BR>{ <BR>public void actionPerformed(ActionEvent evt)
<BR>{ <BR>clip2.stop(); <BR>clip1.play(); <BR>} <BR>});
<BR>button2.addActionListener(new ActionListener() <BR>{ <BR>public void
actionPerformed(ActionEvent evt) <BR>{ <BR>clip1.stop(); <BR>clip2.play();
<BR>} <BR>}); <BR>} <BR>} <BR><BR><BR><BR> 11.3 改变字体 <BR><BR> 传授新知
<BR><BR> 不知不觉中,我们已经学习了很多的关于Java的知识了,从字符界面到图形界面,从呆滞的文字到多彩的图像、声音……
<BR><BR> 不过,不知道大家注意到没有,我们一直没有改变程序中显示出来的文字的字体!现在,我们就来补一下这方面的知识。
<BR><BR> 字体是一个十分神奇的东西,例如,我们使用了黑体字体现出了各个章节,使用楷体字体现出了一些注释、提示、说明等等。它使得我们的文本更生动、更直观。
<BR><BR> 字体由三种属性决定: <BR><BR> 1) 字体名(family name)
<BR><BR> 字体名可以分成两大类:一种是中文字体,如宋体、楷体、黑体等;另一种是英文字体,如Arial、Times New Roman等等;
<BR><BR> 小知识:
<BR><BR> 对于英文字体中有两个术语:“等宽字体”与“变宽字体”,等宽字体是指每一英文字母的宽度一样大;而变宽字体则不然,
m与l所占的宽度就不同。 <BR><BR> 2) 大小(size)
<BR><BR> 与字体名一样,大小也有两种衡量方式:一种是五号、六号,号数越小字越大;另一种是磅值(这是一种印刷界的通用单位),如11磅、12磅,它们的值越大,字越大。不过在Java中只支持后者,也就是磅值(point)。
<BR><BR> 3) 风格(style) <BR><BR> 如斜体、粗体、下划线等。在Java中有四种字体风格,由Font类的值来定义。
<BR><BR> ¨ Font.PLAIN(普通) <BR><BR> ¨ Font.BOLD(加粗) <BR><BR> ¨
Font.ITALIC(斜体) <BR><BR> ¨ Font.BOLD+ Font.ITALIC(粗斜体)
<BR><BR> 也就是说,在Java语言中并不支持下划线这种风格。
<BR><BR> 好了,我们已经知道了字体的详细内容,下面我们来看一下如何在程序中设置、改变字体?很简单,我们先使用以下构造器构造一个字体对象:
<BR><BR><BR>public Font(String familyName,int style,int size)
<BR><BR><BR><BR> 然后,调用对象的setFont方法来设置字体: <BR><BR><BR>public void
setFont(Font font)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -