awt学习笔记3
第三章 图 形
3.1-3.4
这一部分主要是说在使用Graphics这个内置对象应该注意的问题
1、fillRect()与drawRect()不同
drawRect(int x,int y, int x_add, int y_add)
第三个,第四个变量是增量
原文:
import java.applet.Applet;
import java.awt.*;
public class RectTest extends Applet{
public void paint(Graphics g){
g.drawRect(2,2,4,4);
}
}
画笔的变化 坐标(2,2)→(6,2)→(6,6)→(2,6)→(2,2)
而实际在操作的时候,是从点右下侧的像素画的,所以实际上绘制出来的矩形的宽度和高度是5个像素单位——而不是你所想象的4个像素单位
要想画成自己想要的长宽在调用的时候drawRect(int x,int y, int x_add-1, int y_add-1)就可以了
fillRect()是填充四个座标内的区域,所以不会有这样的问题
import java.applet.Applet;
import java.awt.*;
public class RectTest extends Applet{
public void paint(Graphics g){
g.fillRect(2,2,4,4);
}
}
填充(2,2)→(6,2)→(6,6)→(2,6)→(2,2)四个座标内的区域,所以是一个4个像素单位的矩形
2、Graphics引用是复制过来的
3、处理Graphics引用
原则:
如果只是覆盖传递Graphics引用的方法,像Component.paint()或Component.update(),那么然后你就可以什么也不管——处理引用则是调用者的责任。
如果是getGraphics方法中的一个得到一个对Graphics的引用,或者通过Graphics.create()创建一个Graphics,那么就有责任对它们进行处理
3.5绘制和填充形状
随机画直线,颜色随机,位置随机
import java.applet.Applet;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DrawRandomLine extends Applet {
@Override
public void paint(Graphics g) {
Dimension size = this.getSize();
int MAX_COLOR = 255;
int MAX_X = new Double(size.getWidth()).intValue();
int MAX_Y = new Double(size.getHeight()).intValue();
//随机产生三基色数值
int cr = new Double(Math.random()* MAX_COLOR).intValue();
int cg = new Double(Math.random()* MAX_COLOR).intValue();
int cb = new Double(Math.random()* MAX_COLOR).intValue();
//随机产生两个坐标点
int x1 = new Double(Math.random() * MAX_X).intValue();
int y1 = new Double(Math.random() * MAX_Y).intValue();
int x2 = new Double(Math.random() * MAX_X).intValue();
int y2 = new Double(Math.random() * MAX_Y).intValue();
//输出颜色及坐标信息
g.drawString("Color:r=" + cr + ",g=" + cg + ",b=" + cb, 0, 10);
g.drawString("Point A:x=" + x1 + ",y=" + y1, 0, 30);
g.drawString("Point B:x=" + x2 + ",y=" + y2, 0, 50);
Color c = new Color(cr, cg, cb);
g.setColor(c);
g.drawLine(x1, y1, x2, y2);
}
@Override
public void init() {
this.setSize(640, 480);
//设置按钮
Button b = new Button("repaint");
this.add(b);
b.addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
//注意:匿名内部类引用外部同名资源OuterClass.this.XXXX
//其实直接写repaint()就可以了,不过这样写可以知道谁调用的这个方法
DrawRandomLine.this.repaint();
}
}
);
}
}
分享到:
相关推荐
《Java JDK6学习笔记》是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型...
JAVA图形编程(AWT+SWING),包括AWT和SWING两部分。很不错的学习资料,全面,细致,和大家一起分享。
3. 二•定义,关键字和类型 3-5 3.1. 注释的三种形式 3-5 3.2. Java代码中的“;”、“{}”、“ ” 3-5 3.3. 标识符 3-5 3.4. 数据类型 3-6 3.5. 命名规则 3-6 4. 三•表达式和控制流 4-6 4.1. 变量和作用域 4-6 4.2...
全是自己编写的,没问题,是个学习java awt的好笔记。是个非抢号的一个学习资料
java学习过程中的随手笔记,包括常见的文件选择和保存窗口的实现,poi的excel处理
(二)面向对象技术总结.pdf (三)corejava高级特性总结 (四)接口学习总结 (五)异常和内部类 (六)集合框架学习总结 (七)GUI和AWT事件模型 (八)多线程学习总结 (九)输入输出流学习总结 (十)网络编程学习总结
Swing和AWT 事件处理器与访问共享状态的其他代码都要采取线程安全的方式实现 框架通过在框架线程中调用应用程序代码将并发性引入应用程序,因此对线程安全的需求在整个应用程序中都需要考虑 基础知识 ...
abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.... \ddd 1到3位8进制数指定Unicode字符输出(ddd) \uxxxx 1到4位16进制数指定Unicode字符输出(xxxx) \\ \ \' ' \" ...
本资料里涵盖多线程、面向对象、集合框架、高级特定总结、网络编程总结、接口学习总结、GUI AWT等学习的总结与心得,是学习JAVA的一份很好的资料
验证码生成工具类+验证码验证学习笔记 验证码生成工具类参考自:java图形验证码生成工具类及web页面校验验证码,万分感谢! 效果图: 代码如下: package com.my.demo.session.others; import javax.imageio....
面向对象技术总结 corejava高级特性总结 接口学习总结 异常和内部类 集合框架学习总结 GUI和AWT事件模型 多线程学习总结 输入输出流学习总结 网络编程学习总结
(本文基于GWT提供的开发指南(Developer Guide),所采用的图片,例子均出自GWT,可以认为是GWT的学习笔记) GWT的核心是通过一个编译器(compiler)把Java代码翻译为JavaScript代码,开发期间,用户以类似开发AWT...
本文件包含二级学习笔记,其笔记包含类,包,构造方法,对象,继承,多态,数组,异常与断言,输入与输出以及文件操作,线程控制,AWT事件处理,Swing组件,Applet程序设计等
《Java2核心技术》笔记 作者:叶加飞 加拿大.达内科技 (上海中心) 笔记包含以下文档: 面向对象技术总结.pdf ...GUI和AWT事件模型.pdf 多线程学习总结.pdf 输入输出流学习总结.pdf 网络编程学习总结.pdf
CoreJava DAY01 Java概述 1 CoreJava DAY02 数据类型和控制结构 10 CoreJava DAY03 数组 20 ...CoreJava DAY18 awt event 146 CoreJava DAY19-20 多线程 154 CoreJava DAY21-22 IO 174 CoreJava DAY23 网络编程 197
000000_【课程介绍 —— 写在前面的话】_Java学习概述笔记.pdf 010101_【第1章:JAVA概述及开发环境搭建】_JAVA发展概述笔记.pdf 010102_【第1章:JAVA概述及开发环境搭建】_Java开发环境搭建笔记.pdf 010201_【第2...
新手学习J2ME编程的,内容有:J2ME不用AWT/SWING的原因:移动设备CPU慢,内存小;没有鼠标,只是触控屏幕和简单的按钮;屏幕小,不需要重叠窗口;消息处理机制负荷太重等一些关于J2ME的详细讲述