任务描述

本任务带领大家完成一个图形界面的显示,运行显示的效果如图3-1所示。


图形界面 redis 图形界面是怎么实现的_父类


图3-1 图形界面


支撑知识

3.1 GUI

GUI(Graphic User Interface,图形用户界面)是当前编程标准,现在各种软件都是以图形界面的形式发布,例如Windows操作系统、QQ、WEB应用程序和手机软件微信等。
在Windows操作系统中,我们所能看见的按钮、菜单和图形等都是放在屏幕上的一个框架中,如图3-2所示。


图形界面 redis 图形界面是怎么实现的_父类_02


图3-2 GUI程序


Java中的JFrame类是代表屏幕上图形框架,我们可以将按钮、面板等组件(component)放在框架对象上面。如果要显示一个绘制的图形,可以依照下面的步骤:
① 创建框架对象
② 自定义面板类(绘制图形)
③ 创建面板对象
④ 将面板加入框架进行显示
框架和面板的之间的关系如图3-3所示。


图形界面 redis 图形界面是怎么实现的_父类_03


图3-3 框架与面板的关系


3.1 对象

现实世界的问题都是由现实世界的实体及实体之间的相互关系构成的,我们把现实世界的实体称为对象。显然,对象不是固定的。一本书是一个对象,一家书店也可以是一个对象。世界上的各个事物都可视为对象或是由对象组成的,即“一切皆对象”。对象所具有的特征是属性和方法。例如一个人叫“达琳”的超市收银员,她有属性(名字、性别、年龄、体重等)和方法(收款、打印账单、说话等)。
在Java中,我们经常使用new关键字来创建对象,如:
JFrame frame = new JFrame(“GAME”);

3.2 类

和现实中一样,在Java程序设计中,相似的对象可以归并到一类(class)中去,例如对象“张三”、“李四”、“赵五”等等都可以归结为“人”这个类。类实质上定义的是一种对象的类型,它是对具有相同属性和方法的一组对象的抽象,描述了属于该类型的所有对象的特性。
类不是对象,类是用来创建对象的模型,是对象的蓝图。举例来说你可以使用框架类JFrame来创建出许多大小、位置不同的框架对象。

3.3 类和对象的区别

类表示的是抽象概念,对象是实际存在的物体,因此在Java种使用对象的话,必须先创建某种类型的对象。

图形界面 redis 图形界面是怎么实现的_父类_04


图3-4 类和对象的区别


3.4 包

Java要求文件名和类名相同,所以如果将多个类放在一起时,很可能出现文件名冲突的情况,这时Java提供了一种解决该问题的方法,那就是使用包将类进行分组。

3.5 方法

由于类中定义了属性和方法,因此生成的对象也拥有这些属性和方法,可以通过【对象名.属性】或【对象名.方法】来访问对象的属性和方法。

3.6 继承

继承一般是指晚辈从父辈那里继承财产,也可以说是子女拥有父母所给予他们的东西。在面向对象程序设计中,继承的含义与此类似,所不同的是,这里继承的实体是类而非人。也就是说继承是子类拥有父类的成员(属性和方法)。下面,我们通过一个具体的实例来说明继承的应用。
在动物园中有许多动物,而这些动物又具有相同的属性和行为,这时就可以编写一个动物类Animal(该类中包括所有动物均具有的属性和行为),即父类。但是对于不同类的动物又具有它自己特有的属性和行为,例如,鸟类具有飞的行为,这时就可以编写一个鸟类Bird,由于鸟类也属于动物类,所以它也具有动物类所共同拥有的属性和行为,因此,在编写鸟类时,就可以使Bird类继承于父类Animal。这样不但可以节省程序的开发时间,而且也提高了代码的可重用性。Bird类与Animal类的继承图如3-5所示。


图形界面 redis 图形界面是怎么实现的_java_05


图3-5 动物的继承图


任务实施

任务3.1 创建框架

创建Java项目,命名为:Project03,新建一个启动类Start,在主方法中创建框架对象,并设置框架大小,显示框架。如代码清单3-1所示。
代码清单3-1:Start.java


//使用系统提供的JFrame类必须先导入
import javax.swing.JFrame;
public class Start {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //依据系统提供的JFrame类创建框架对象,并命名为frame
        //JFrame()里面字符表示设置框架标题
        JFrame frame = new JFrame("GUI");
    }
}

任务3.2 调用框架对象方法

在创建框架对象语句后面,调用框架对象已有的方法,如设置大小,如果要显示框架,则必须调用setVisible方法。


//调用框架对象的设置大小方法
frame.setSize(300, 300);
//调用框架对象的显示方法
frame.setVisible(true);

任务3.3 显示自己绘制的图形

要显示自己绘制的图形,则需要使用到Java提供的面板JPanel类,JPanel类提供的一个空白的面板给用户,用户可以根据需要在这个空白面板上随意绘制图形图片。
如果要使用系统提供的JPanel类,用户自己需要重新定义一个类,这个类必须继承系统类JPanel,这样继承了JPanel后,这个自定义类就继承了JPanel所有的功能。同时用户还可以调用JPanel类的绘制方法绘制自己的图形图片。
下面我们来定义一个显示方块的面板类,如代码清单3-2所示。
代码清单3-2:MyPanel.java


//使用JPanel和Graphics类前需要导入
import java.awt.Graphics;
import javax.swing.JPanel;
//使用关键字extends继承JPanel,让MyPanel具有面板功能
public class MyPanel extends JPanel {
    @Override
    public void paint(Graphics g) {
        // TODO Auto-generated method stub
        super.paint(g);
        //绘制方块,125,100表示位置,50,50表示长宽
        g.drawRect(125, 100, 50, 50);
    }
}

有了面板类后,我们就可以在启动类中创建此面板类对象,并将绘制了方块的面板对象加入框架中显示,在启动类显示框架前加入如下代码:


//创建自定义的面板类对象
MyPanel myPanel = new MyPanel();
//将面板对象加入框架显示
frame.add(myPanel);

拓展训练

用户在面板中绘制各种不同的图形。