java学习笔记---第七章图形程序设计

7:图型程序设计

1.       Swing概述

AWT窗口工具箱

Swing没有完全替代awt,而是基于awt架构之上。Swing仅仅提供了能力更加强大的用户界面组件。

Swing是指被绘制的非对等体用户界面类

Awt是指对象事件处理这样的窗口工具箱的底层机制

Sun开发了一种被称为“metal”的独立于平台的观感,市场上成为java观感

2.       创建框架:

顶层窗口被称为框架frame

AWT Frame    Swing Jframe

Jframe是极少数几个不绘制在画布上的Swing组建之一,它的修饰不见由用户的窗口系统绘制,而不是由Swing绘制

在包含多个框架的程序中,不能因为用户关闭了其中一个框架就让程序退出

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

3.       框架定位

dispose方法用于关闭窗口,并回收创建窗口所使用的全部资源

setIconImage 方法用于将窗口极小化时的图标设置为Image对象

setTitle方法改变标题栏中的文本

setResizable 利用一个boolean值确定框架的大小是否允许用户改变

setLocation   setBounds

对于专业应用程序来说,应该检查用户屏幕的分辨率,并根据其分辨率编写代码重置框架的大小:使用Toolkit类的静态方法getDefaultToolkit得到一个toolkit对象,并调用getScreenSize()方法,该方法以Dimension对象的形式返回屏幕大小

 

4.       在面板中显示信息

框架被设计为放置组件的容器,应该在一个称为面板的组件上绘制信息,并将这个面板添加到框架中

JFrame结构:根面板,层级面板,玻璃面板,内容窗格

面板的两个特性:

    包含一个可以用于绘图的表面

    本身也是一个容器,在面板中还可以放置按钮,滑块等这样的用户界面组件

为了在面板上进行绘图,需要:

    定义一个扩展于JPanel的类

    覆盖paintComponent方法

java中,所有绘图都必须通过graphics对象,其中包括绘制图案、图像和文本

一定不要自己调用paintComponent方法,在应用程序需要重新绘图的时候,这个方法将被自动的调用,不要人为的干预这个自动处理的过程

强制刷新屏幕,调用repaint方法,而不是paintComponent方法

在子类中覆盖paintComponent方法时,为了确保超类完成自己的那部分工作,必须在绘制自己的内容之前调用super.paintComponent()方法

 

 

 

5.       2D图形

要想使用Java 2D库绘制图形,需要获得一个Graphics2D类对象

java2D库的三大对象:Line2D  Rectangle2D  Ellipse2D

要想绘制图形,首先要创建一个实现了shape接口的类地对象,然后调用Graphics2D类中的draw方法

java2D图形采用浮点坐标,java2D库中内部很多浮点计算都采用单精度float,在某些平台上,float计算的速度比较快,并且它只需要double的一半存储量,但有时候处理float比较不方便,因为很多方法返回值为double,必须作强制类型转换

2D库的设计者将每个图形类提供了两个版本:一个是为节省空间的程序员提供的float版本,一个是为那些懒惰的程序员提供的double类型的版本。但只有在构造图形能够对象时,才会用到。

Rectangle2DEllipse2D类都是由公共超类RectangleShape类继承来的

 

 

 

6.       颜色

使用Graphics2D类的setPaint方法可以为图形环境上的所有后续的绘制操作选择颜色.

步骤:选择颜色,绘制图形,再选择颜色,再绘制图形

Color类定义了13种标准颜色,还能使用三原色进行定义,使用Color类的构造器

Color类的brighter()方法和darker() 方法,加亮或变暗当前颜色

设置背景颜色:使用Component类的steBackground方法

SystemColor类提供了一些系统颜色的全局参数

填充边框使用draw()方法,填充内块使用fill()方法

 

7.       为文本设定特殊字体

字体名由Helvetica 这样的字体家族名和一个可选的Bold后缀组成

要想知道某台特定计算机上所允许使用的字体,就需要调用GraphicsEnvironment类中的getAvailableFontFamilyName方法,这个方法返回一个字符型数组,其中GraphicsEnvironment类描述了用户系统的图形环境

为了创建一个公共基准,AWT定义了五个逻辑字体名:

    SansSerif

    Serif

    Monospaced

    Dialog

    DialogInput

这些字体将映射到客户机上的实际字体

字体映射定义在java安装的jre/lib子目录中的fontconfig.properties文件中。

要想使用某种字体绘制字符,必须首先利用指定的字体名、字体风格和字体大小来创建一个Font类对象

Java字体包含了通用的ASC2字符和符号,只有在Unicode字符集中定义的符号才能够使用

 

8.       图像

一旦图像保存在本地文件或因特网上的某个位置上,就可以将它们读到java应用程序中,并在Graphics对象上进行显示

String filename=”…”

Image image = ImageIo.read(new File(filename));

这个方法将抛出一个IOException

image包含了一个封装图像数据的对象引用,可以使用Graphics类的drawImage方法将图像显示出来

使用copyArea可以拷贝图像

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值