图形和事件驱动程序 ---------- 画一个简单的笑脸(初学者)

当初学C语言的时候,老师讲了一点Windows方面的编程,但是没学会,现在自学java的过程中遇到了一些窗口方面的知识,在这里拿出来和大家分享一下。
作为初学者,我们先来在窗口上画一个笑脸:
首先我把代码打出来:
先是一个主函数来实现自己定义的SmileFace类
package com.li;

public class TestFace {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        new SmileFace();
    }
}

然后我们来看看SmileFace类的代码

package com.li;

import java.awt.*;
import javax.swing.*;

public class SmileFace extends JFrame{

    private static final long serialVersionUID = 4089022528669013943L;
    public SmileFace()
    {
         setTitle(" Simile Face");
         setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
         setSize(400,500);
         setLocation(300,300);
         getContentPane().setBackground(Color.yellow);
         setVisible(true);
    }
    public void paint(Graphics g)
    {
        super.paint(g);
        g.setColor(Color.red);
        g.drawOval(85,75,75,75);
        g.setColor(Color.blue);
        g.drawOval(100, 98, 10, 10);
        g.drawOval(135,98,10,10);
        g.drawArc(102, 115, 40, 25, 0, -180);
        g.setColor(Color.white);
        g.drawString("Smiley Face", 90, 175);
    }
}

我们再来看一下效果图
这里写图片描述

我们下面来具体分析一下代码:
1.我们需要的是一个可以显示图形的窗口,所以我们的SmileFace类是继承于JFrame类的
2.我们再来看看构造函数

public SmileFace()
    {
         setTitle(" Simile Face");
         setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
         setSize(400,500);
         setLocation(300,300);
         getContentPane().setBackground(Color.yellow);
         setVisible(true);
    }

从字面意思也可看出来,setTitle是指这个窗口的标题的意思
setDefaultCloseOperation中的JFrame.EXIT_ON_CLOSE指的是窗口上的那个×在鼠标点下后进行的反应,EXIT_ON_CLOSE表示的意思是终止这个程序的运行。setSize表示的是这个窗口的大小,单位是像素,setLocation表示的是窗口的左上角在屏幕的位置,单位也是像素。getContentPane().setBackground()是可以设置窗口的背景色的。而窗口被创建后并不能显示出来,使用setVisible(true)可以把窗口显示出来。

下面看一下paint方法

public void paint(Graphics g)
    {
        super.paint(g);
        g.setColor(Color.red);
        g.drawOval(85,75,75,75);
        g.setColor(Color.blue);
        g.drawOval(100, 98, 10, 10);
        g.drawOval(135,98,10,10);
        g.drawArc(102, 115, 40, 25, 0, -180);
        g.setColor(Color.white);
        g.drawString("Smiley Face", 90, 175);
    }

首先,paint方法中有一个graphics的类,这是一个绘图专用的类,这里先不管它,可能你会问,为什么paint方法没有调用呢,其实当setVisible设置为true时,这个方法就已经自动调用了。
使用super关键字是为了调用超类JFrame中的相关方法。
setColor()是用来设置颜色的,通俗的讲,在下一个setColor()出来之前,你在屏幕上输出的所有的东西的颜色由上一个setColor()来决定。
drawOval()是用来画椭圆形的,前两个参数代表圆心坐标,后两个表示椭圆的长轴和短轴(不是半轴)
drawArc()是用来画圆弧的,前四个参数和drawOval()的含义一样,后两个中的第一个表示圆弧的起始的角度,后一个表示圆弧终止的角度,可以为负数(默认逆时针旋转为正)
drawString()表示在某个坐标开始输出一行字,后两个数字代表坐标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值