Java GUI 收藏
本章目标:
通过本章的学习,读者应能知道GUI(图形用户界面)的概念,并且能够使用Java语言来构建一个令人赏心悦目的GUI界面,使你的程序更具有感召力。掌握标签、按钮、文本框、选择框、滚动条……等等各种GUI部件的使用方法。
9.1 用什么构建GUI
传授新知
早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看到历史的足迹。
后来,Apple公司率先在电脑的操作系统中实现了图形化的用户界面(Graphical User Interface,简称GUI),但由于Apple公司封闭的市场策略,自己完成电脑硬件、操作系统、应用软件一条龙的产品,与其它PC不兼容。这使得 Apple公司错过了一次一统全球PC的好机会。
后来,著名的Microsoft公司推出了风靡全球的Windows操作系统,它凭借着优秀的图形化用户界面,一举奠定了操作系统标准的地位。这也造就了世界首富---比尔.盖茨和IT业的泰山北斗微软公司。
在这图形用户界面风行 于世的今天,一个应用软件没有良好的GUI是无法让用户接受的。而Java语言也深知这一点的重要性,它提供了一套可以轻松构建GUI的工具。在本章和下一章中,我们将向你充分证明这一点。
在Java语言提供的GUI构建工具中,可以分为“部件”(component)和“容器”(container)两种。
在Java语言中,提供了以下部件:
§ 按钮
§ 标签
§ 复选框
§ 单选按钮
§ 选择框
§ 列表框
§ 文本框
§ 滚动条
§ 画布
§ 菜单
这些部件,我们在使用Windows操作系统时都遇到过,你通过操作它们来实现与程序的交互。
而光有“部件”就组不成程序,我们必须使用“容器”将这些“部件”装配起来,使其成为一个整体。Java语言还提供了以下“容器”:
§ 程序的启动封面
§ 窗体(form)
§ 对话框(Dialog)
Java语言是通过AWT(抽象窗口化工具包)和Java基础类(JFC或更常用的Swing)来提供这些GUI部件的。
其中Java.awt是最原始的GUI工具包,存放在java.awt包中。现在有许多功能被已被Swing取代并得到了很大的增加与提高,因此一般我们很少再使用Java.awt,但是AWT中还是包含了最核心的功能,通常,一个Java的GUI程序至少还要使用下面几个类:
§ java.awt.Color:基本颜色定义
§ java.awt.Font:基本字体定义
§ java.awt.Cursor:光标操作定义
而Swing则存放在javax.swing包中。
我们可以在Java的GUI程序的最前面加上以下两句就可以了:
import java.awt.*;
import javax.swing.*;
这样就可以一劳永逸了。
用Java开发一个GUI程序,通常需要以下几步:
1) 构建一个顶层容器;
2) 构建一个部件;
3) 用容器的add方法将部件加入到这个容器中;
我们马上就开始!
自测练习
1) 在Java语言中,用来构建GUI的工具可以分为________和__________。
a.控件 b.部件 c.窗体 d.容器
2) 下面不属于“部件”的是__________。
a.选择框 b.窗体 c.菜单
3) 下面不属于“容器”的是__________。
a.文本框 b.对话框 c.窗体
4) 容器可以被添加到其它容器中去。________
a.正确 b.不正确
5) 部件可以被添加到容器中去。_______
a.正确 b.不正确
6) 容器可以被添加到部件中去。_______
a.正确 b.不正确
7) 部件可以被添加到其它部件中去。_______
a.正确 b.不正确
练习答案
1)b、d 在Java语言中,GUI构建工具可以分为部件与容器。
2)b 窗体是一种容器,不是部件。
3)a 文本框是一种部件,不是容器。
4)a 有些容器可以被包含到其它容器中去。
5)a 容器就是用来放置各种部件的。
6)b 将部件装到容器去,就象“把桶装到水中”一样可笑。
7)b “把水装到水中”也是可笑的呀。
9.2 使用Button(按钮)
实例说明
1.首先,我们使用文字编辑软件输入下源程序。
源程序:useButton.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class useButton extends JApplet
{
JButton button1;
public void init()
{
JPanel panel1=(JPanel)getContentPane();
panel1.setLayout(new FlowLayout());
button1=new JButton(“Beep!”);
panel1.add(button1);
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
Toolkit.getDefaultToolkit().beep();
}
});
}
}
2.执行以下命令,编译这个程序:
c:javastudy> javac useButton.java
由于,这是一个Java Applet(小应用程序),需要在网页上显示,所以我们需要编辑一个包含这个小应用程序的HTML文件。形如:
源程序:useButton.html
<html><body>
<applet code="useButton.class" WIDTH=150 HEIGHT=100>
</applet>
</body></html>
3.然后使用appletviewer来运行这个程序:
c:javastudy> appletviewer useButton.html
程序输出如下图所示:
图9-1 程序useButton的运行结果
你试着按一下“Beep!”这个按钮,每按一下就会响一声。
传授新知
我们一起来看一下这个冗长而且令人费解的程序段。
1)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
这一段程序是用来将构建GUI程序所需的包包含进来。
2)
public class useButton extends JApplet
这一句用来声明类useButton,说明它是从JApplet中继承而来的子类。JApplet是Applet类的一种增强类。因此,从这里可以看出这个程序是Java小应用程序,而不是Java应用程序。
3)
JPanel panel1=(JPanel)getContentPane();
panel1.setLayout(new FlowLayout());
这一段程序创建了一个Jpanel(面板)容器:panel1,然后调用setLayout方法显示它。
4)
button1=new JButton(“Beep!”);
panel1.add(button1);
这一段程序创建了一个新的部件:button1按钮,并将按钮上显示标签“Beep!”。然后调用容器panel1的add方法将这个按钮添加到这个面板上。
5)
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
Toolkit.getDefaultToolkit().beep();
}
});
这是一个特殊的事件,它为按钮buuton1添加上一个ActionListener(action:行动、事件;Listener:监听者),也就是事件监视器。这个监视器做什么呢?
当actionPerformed(action:行动、事件;Performed:执行,表演),就是当这个事件执行时(什么事件呢?ActionEvent evt,按下按钮时),将执行:Toolkit.getDefaultToolkit().beep()
也就是响铃。
自测练习
1)按钮类中提供了一个方法,可以修改按钮文本的颜色。以下就是一个应用实例:
button1.setForeground(Color.green);
其中button1是按钮名,setForeground则方法名,set就是设置,Foreground就是前景,也就是设置前景色。参数是Color.green,绿色。相对应的,红色就是Color.red,蓝色就是Color.blue。
请编写一个程序,在面板上显示三个按钮,按钮上的标签分别是:set red,set green,set blue(颜色为黑色)。当按下set red按钮,则三个按钮的标签都变成红色;而按下set green则变成绿色;按下set blue则变成蓝色。
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
2)按钮类中还提供了一个方法,可以修改按钮标签。以下就是一个应用实例:
button1.setText(“OK”);
其中button1是按钮名,setText是方法名,set就是设置,Text就是文本,也就是设置按钮上的文本色。参数是”OK”。这样就会将button1的标签改为”OK”。
请使用这个方法修改程序useButton,使得按钮上显示按过的次数,如果没有按下,则仍显示“Beep!”。只需写出修改的部分。
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
练习答案
1) 以下就是一个实现实例:
源程序:lianxi901.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class lianxi901 extends JApplet
{
JButton buttonRed;
JButton buttonGreen;
JButton buttonBlue;
public void init()
{
JPanel panel1=(JPanel)getContentPane();
panel1.setLayout(new FlowLayout());
buttonRed=new JButton(“set red”);
buttonGreen=new JButton(“set green”);
buttonBlue=new JButton(“set blue”);
panel1.add(buttonRed);
panel1.add(buttonGreen);
panel1.add(buttonBlue);
buttonRe
评论0