分享
 
 
 

Java how to program(Third Edition) ——手记(六)

王朝java/jsp·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

Java how to program(Third Edition II)

——手记

第十一章 图形和Java2D

1.由于窗口最左上角的坐标(0,0)实际上是标题栏的后面。所以,使用坐标绘制图形时应该调整它到窗口边框的里面。Container类(java中所有窗口类的超类)中有一个专门针对该目的的方法getInsets,它能返回一个Insets对象(java.awt包)。Insets对象中有4个public成员——top,bottom,left和right,它们代表了窗口中可绘制区域的四条边。

2.Graphics是一个抽象类,这是由Java的可移植性决定的。在支持Java的各个平台上,绘图的实现是不同的,还没有一个能在所有系统上实现绘图功能的类。在各种平台上使用Java时,系统创建Graphics的一个派生类,由它来实际实现所有的绘图功能,为用户提供界面Graphics类,使我们能够编写以独立与平台的方式使用图形的程序,将其实现隐蔽起来。

3.Color方法和与颜色相关的Graphics方法:

1)public Color(int r,int g,int b) //在红、绿、蓝颜色含量的基础上创建一种颜色,每种含量都用0~255之间的一个整数表示;

2)public Color(float r,float g,float b) //在红、绿、蓝颜色含量的基础上创建一种颜色,每种含量都用0.0.~1.0之间的一个浮点数表示;

3)public int getRed() //返回一个0~255之间表示红色含量的值;

4)public Color getColor() //返回一个代表图形上下文当前颜色的Color对象;

5)publc setColor(color c) //设置图形上下文设置当前绘图颜色。

4.Java选择颜色的GUI控件JcolorChooser(javax.swing包)。

JcolorChooser类的static方法showDialog显示颜色选择对话框。该方法返回被选择的Color对象(如果按下cancel键,或没有按下OK键就关闭了对话框,则返回null)。

showDialog方法有三个参数,第一个指向其父控件,String为对话框标题栏显示的信息,最后一个为对话框中选中的初始颜色。

5.字体的构造函数和Graphics类方法setFont:

1)public Font(String name, int style,int size) //用指定的字体,风格和大小创建一个Font对象。

2)public int getStyle(); public String getName(); public int getSize();

public String getFamily();

3)public boolean isPlain(); pulbic boolean isBold(); public boolean isItalic();

4)public Font getFont(); //返回一个字体对象的引用,表示但前字体;

5)public void setFont(Font f); //设置当前字体为Font对象指定的字体,风格和大小;

6.用于绘制直线、矩形和椭圆的Graphics方法:

1)public void drawLine(int x1,int y1,int x2,int y2);

2)public void drawRect(int x,int y,int width,int height); //用指定的参数画一个空心的矩形

3)public void fillRect(int x,int y,int width,int height); //用指定的参数画一个实心的矩形

4)public void clearRect(int x,int y,int width,int height); //用当前背景色绘制一个矩形;

5)public void drawRoundRect(int x,int y,int with,int height,int arcWidth,int arcHeight);//其中arcWidth和arcHeight决定其圆角

6)public void fillRoundRect(int x,int y,int with,int height,int arcWidth,int arcHeight);

7)public void draw3DRect(int x,int y,int with,int height,boolean b);//b为true时,矩形为突出,false则凹陷;

8)public void fill3DRect(int x,int y,int with,int height,boolean b);

9)public void drawOval(int x,int y,int with,int height);

10) public void fillOval(int x,int y,int with,int height);

7.新的Java2D API提供了高级的二维图形功能,这些都在下列包中:java.awt, java.awt.image, java.awt.color, java.awt.font, java.awt.geom, java.awt.print, java.awt.image.renderable。

8.实例分析:

1)源代码:

package Shapes;

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

import java.awt.geom.*;

import java.awt.image.*;

public class Shapes extends JFrame{

public Shapes(){

super("Drawing 2D shapes");

setSize(425,160);

show();

}

public void paint(Graphics g){

Graphics2D g2d=(Graphics2D)g;

g2d.setPaint(//setPaint 方法设置paint对象,以决定显示的颜色和形状;

new GradientPaint(5,30,Color.blue,35,100,Color.green,false)//最后一个参数

//false表示渐变颜色不循环;

);

g2d.fill(new Ellipse2D.Double(5,30,65,100)); //使用双精度的浮点数设置尺寸;

g2d.setPaint(Color.red);

g2d.setStroke(new BasicStroke(10.0f)); //设置画笔的宽度为10象素;

g2d.draw(new Rectangle2D.Double(80,30,65,100));

//BufferedImage对象生成花纹,BufferedImage类可以用颜色和灰度来产生图形,该

//处的10,10表示BufferedImage10个象素宽,10个象素高,BufferedImage.TYPE_INT_RGB

//表示图像中存储的颜色用RGB体系;

BufferedImage buffImage=new BufferedImage(10,10,BufferedImage.TYPE_INT_RGB);

Graphics2D gg=buffImage.createGraphics(); //在BufferedImage中绘制图形;

gg.setColor(Color.yellow);

gg.fillRect(0,0,10,10);

gg.setColor(Color.black);

gg.drawRect(1,1,6,6);

gg.setColor(Color.blue);

gg.fillRect(1,1,3,3);

gg.setColor(Color.red);

gg.fillRect(4,4,3,3);

g2d.setPaint(

new TexturePaint(buffImage,new Rectangle(10,10)) //TextturePaint对象用存储在

//BufferedImage中的图像作为填充纹理来填充图形;

);

g2d.fill(new RoundRectangle2D.Double(155,30,75,100,50,50));

g2d.setPaint(Color.white);

g2d.setStroke(new BasicStroke(6.0f));

g2d.draw(

new Arc2D.Double(240,30,75,100,0,270,Arc2D.PIE)//Arc2D.PIE常量指出是用两条

//直线封闭弧形, Arc2D.CHORD表示将画一条从起点到终点的直线,Arc2D.OPEN表示不封闭;

);

g2d.setPaint(Color.green);

g2d.draw(new Line2D.Double(395,30,320,150));

float dashes[]={10};

g2d.setPaint(Color.yellow);

g2d.setStroke(

new BasicStroke(4,BasicStroke.CAP_ROUND,//设置画笔4个象素,端点有为圆角;

BasicStroke.JOIN_ROUND, //线条汇合处也为圆角;

10,dashes,0) //dashes表示小段虚线的长度;

//0表示dashes数组中的起始位置;

);

g2d.draw(new Line2D.Double(320,30,395,150));

}

public static void main(String args[]){

Shapes app=new Shapes();

app.addWindowListener(

new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

}

);

}

}

第十二章 基本图形用户界面构件

1.Swing构件经常被称为轻量级构件,因为他们是用Java写成的,所以就不需要使用那些相关于各种平台的复杂GUI功能。AWT(Abstract Windows Toolkit)构件(许多和Swing构件功能相同)被系在各自的本地平台上,相应的称为重量级构件,因为他们依赖于本地平台的窗口系统来决定他们的功能、外观和风格。

2.为了处理图形用户界面事件,需要注册事件侦听器和实现事件处理。一个GUI事件的事件侦听器是一个对象,此对象的类实现了java.awt.event包和javax.swing.event包中一个或多个事件侦听器的接口。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有