本节中,我们将创建一个小应用程序,它使用循环生成其图案。我们将使用if语句和setColor方法。同时我们将介绍drawString方法,并使用它在小应用程序窗口中写出文本。

下面的小应用程序是显示一串七个面孔,我们下面来看看效果。

先贴上自己慢慢敲的一个小时的代码:

 package 一个事例图形小应用程序;
import javax.swing.JApplet;
import java.awt.*;
import java.awt.Color;
import java.awt.Graphics;
//Graphics and Color public class differentFace extends JApplet
{
public static final int FACE_DIAMETER = 50;
public static final int X_FACEO = 10;
public static final int Y_FACEO = 5; public static final int EYE_WIDTH = 5;
public static final int EYE_HIGHT = 10;
public static final int X_RIGHT_EYEO = 20;
public static final int Y_RIGHT_EYEO = 15;
public static final int X_LEFT_EYEO = 45;
public static final int Y_LEFT_EYEO = Y_RIGHT_EYEO; public static final int NOSE_DIAMETER = 5;
public static final int X_NOSEO = 32;
public static final int Y_NOSEO = 25; public static final int MOUTH_WIDTH = 30;
public static final int MOUTH_HEIGHTO = 0;
public static final int X_MOUTHO = 20;
public static final int Y_MOUTHO = 35;
public static final int MOUTH_START_ANGLE = 180;
public static final int MOUTH_EXTENT_ANGLE = 180; public void paint(Graphics canvas){
int i,xOffset,yOffset;//希望循环结束后i的值还是要存在
for(i = 0; i <= 4; i++){
//画出一张脸
xOffset = 50 * i;
yOffset = 30 * i; if(i%2==0){
canvas.setColor(Color.LIGHT_GRAY);
canvas.fillOval(X_FACEO + xOffset, Y_FACEO + 30 * i, FACE_DIAMETER,FACE_DIAMETER);
}
canvas.setColor(Color.BLACK);
canvas.drawOval(X_FACEO + xOffset, Y_FACEO + yOffset, FACE_DIAMETER, FACE_DIAMETER);
//画出眼睛
canvas.setColor(Color.BLACK);
canvas.fillOval(X_RIGHT_EYEO + xOffset, yOffset + Y_RIGHT_EYEO, EYE_WIDTH, EYE_HIGHT);
canvas.fillOval(X_LEFT_EYEO + xOffset, yOffset + Y_LEFT_EYEO, EYE_WIDTH, EYE_HIGHT);
//画鼻子
canvas.setColor(Color.black);
canvas.fillOval(X_NOSEO + xOffset, Y_NOSEO + yOffset, NOSE_DIAMETER, NOSE_DIAMETER );
//画嘴巴
canvas.setColor(Color.black);
canvas.drawArc(X_MOUTHO + xOffset, Y_MOUTHO + yOffset, MOUTH_WIDTH, MOUTH_HEIGHTO + 3 * i, MOUTH_START_ANGLE, MOUTH_EXTENT_ANGLE); }
//循环结束后i的值为5
xOffset = 50 * i;
yOffset = 30 * i;
canvas.setColor(Color.BLACK);
canvas.drawOval(X_FACEO + xOffset, Y_FACEO + yOffset,FACE_DIAMETER,FACE_DIAMETER);

        canvas.drawString("zhangjie is a hardworking boy", X_FACEO+xOffset+FACE_DIAMETER, Y_FACEO+yOffset);

     }

 }

代码太长,接着敲下去也没有什么意义了,还是先来分析分析代码。

最后的效果是没有显现出来的,drawString方法,它是会在笑脸的上方显示出文字的效果

还是先来简单的介绍一下drawString方法,它类似于绘制椭圆的方法,但是它的作用是用来显示文字而不是绘制图形。例如将hello显示在点(10,20)的位置:

canvas.drawString("hello",10,20);

java工程开发之图形化界面之(第四课)的更多相关文章

  1. java工程开发之图形化界面之(第二课)

    上一节主要是讨论小的应用程序,在这里我们将采用一种全新的方式来重新编写它. 在这里我们注重关注JFrame和JOptionPane.这些类提供了在JAVA应用程序使用图形的方法以及在JAVA程序中对I ...

  2. java工程开发之图形化界面之(第一课)

    下面我们先上代码: package 一个事例图形小应用程序; import javax.swing.JApplet; import java.awt.Graphics; public class 绘制 ...

  3. java工程开发之图形化界面之(第五课)

    下面我们将: 一)更加完整的解释Graphics类 二)使用方法来更清晰的重新编写前面图形小应用程序之一 三)介绍一些其他的绘图的方法 四)介绍方法init,它是类似于paint但是用于不同用途的另一 ...

  4. java工程开发之图形化界面之(第三课)

    上面我们讲述了通过JOptionPane进行文本I/O操作,一个是通过JOptionPane来获取的 参考链接:http://blog.sina.com.cn/s/blog_993d254201013 ...

  5. 黑马程序员:Java基础总结----GUI图形化界面

    黑马程序员:Java基础总结 GUI图形化界面   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流!   GUI(Graphical User Interface)图形化界 ...

  6. PySide——Python图形化界面入门教程(四)

    PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your Own Signals and Slots 翻译自:http://pythoncentral ...

  7. PySide——Python图形化界面

    PySide——Python图形化界面 PySide——Python图形化界面入门教程(四) PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your ...

  8. Java 图形化界面设计(GUI)实战练习(代码)

    关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...

  9. 转:二十七、Java图形化界面设计——容器(JFrame)

    转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...

随机推荐

  1. 值得一提:关于 HDFS 的 file size 和 block size

    转 http://blog.csdn.net/samhacker/article/details/23089157?utm_source=tuicool&utm_medium=referral ...

  2. 使用gulp构建nodejs,你只需要记住5个函数

    gulp gulp是一个nodejs的streaming构建工具,所谓的streaming大致意思就是把构建流程想成一个个链接的管道(pipe). 为什么要这样做呢? 要解释原因,就不得不提到unix ...

  3. centos 10字母随机文件病毒清理

    病毒表现:网络流量暴满,疯狂地向香港的一个IP发数据,同时在top里面表现为随机的10位字母的进程,看/proc里面的信息,则为ls,cd之类常见的命令,CPU利用率也在top之首.杀死该进程后,会再 ...

  4. wpf之ListBox中ListBoxItem横向排列

    ListBox中ListBoxItem默认是纵向排列,可以通过自定义样式,让其横向排列, 如下Demo: XAML: <Window x:Class="ListBoxItemStyle ...

  5. python常用正则表达式

    匹配特定数字:^[1-9]\d*//匹配正整数−[1−9]\d∗  //匹配负整数^-?[1-9]\d*//匹配整数[1−9]\d∗|0 //匹配非负整数(正整数 + 0)^-[1-9]\d*|0// ...

  6. Linux平台从文件中查找字符赋值于变量

    以telnet方式登录Linux主机,在默认目录下用命令创建一个包含DUT wanIP的文本文件.[root] echo wanIP=88.0.100.253 > ./wanIP.txt在默认目 ...

  7. MFC通过ODBC连接Mysql程序

    分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 MFC通过ODBC连接 ...

  8. CSS3秘笈:第六章

    第六章  文本格式化 1.font-family 属性设置字体.除了指定想要的字体之外还要使用备用字体.例如: p{ font-family:Arial ,Helvetica ,sans-serif; ...

  9. SpringSecurity自定义过滤器

    applicationContext-security.xml: <beans:beans xmlns="http://www.springframework.org/schema/s ...

  10. JVM 设置

    按照基本回收策略分 引用计数(Reference Counting) 标记-清除(Mark-Sweep) 复制(Copying) 标记-整理(Mark-Compact) 按分区对待的方式分 增量收集( ...