本节中,我们将创建一个小应用程序,它使用循环生成其图案。我们将使用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. 请教下关于CKEditor富文本编辑框设置字体颜色的问题

    CKEDITOR.editorConfig = function( config ){ config.plugins = 'about,a11yhelp,basicstyles,bidi,blockq ...

  2. 利用pscp命令实现linux与windows文件互传

    windows==>linux(单个文件) PrivateKey.ppk(私钥)可以是相对路径或者绝对路径pscp -i D:\PrivateKey.ppk D:\xxx.xx root@123 ...

  3. 移动端解决input focus后键盘弹出,高度被挤压的问题

    //解决弹出键盘页面高度变化bug var viewHeight = window.innerHeight; //获取可视区域高度 $("input").focus(functio ...

  4. ajax基本使用

    ajax在用于异步交互以来,一直被广泛使用,其使用语法格式基本如下: 基本格式为$.ajxa({ type:"",数据传送方式POST,GET url:"",处 ...

  5. 2013最新Android常用的工具类整理

    主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils. Pref ...

  6. win7下将dll文件的打开方式改回系统默认

    打开注册表,定位到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.dll把除OpenWit ...

  7. akka 入门

    http://blog.csdn.net/thkhxm/article/details/40182835 1.首先安装akka的相关包-- http://akka.io/downloads/2.导入依 ...

  8. /usr 的由来及/usr目录结

    /usr 的由来及/usr目录结构   本文转自Delectat.com讨论中,大部分观点认为: usr 是 unix system resources 的缩写: usr 是 user 的缩写: us ...

  9. unlinking

    When a file name is deleted from the directory tree, the file name's connection to the inode number ...

  10. 微信开发网页授权OAuth2.0注意事项

    如图所示