Java图形用户界面绘图了解杂谈

来源:互联网 发布:unity3d棋牌游戏教程 编辑:程序博客网 时间:2024/05/20 16:32

在Java中,顶层窗口被称为框架(Frame)。AWt里有一个Frame类,对应的swing有JFrame。JFrame是为数不多的不绘制在画布上的swing组件之一。因此他的修饰部件,就有用户的窗口系统来绘制。

注意:不要将 swing组件和awt组件混在一起使用,会导致视觉和行为的不一致。具体试试,感受感受。

组件 类中的很多方法都是以获取/设置的方法对的形式存在,这对被称为一种属性。

setBounds   setLocation定位组件

setlocationbyPlatform(true)窗口系统会选择窗口的位置在 上次显示窗口很少偏移量的位置。

Toolkit类包含了许多与本地窗口打交道的方法。  可以调用getScreenSize 返回Dimension对象即屏幕尺寸

。。。



JFrame介绍:

JFrame结构相当复杂,JFrame有4层面板。根面板,层级面板,内容面板,玻璃面板。

其中根面板 层级面板 玻璃面板是用来组织菜单栏和内容窗格以及实现观感的   swing程序要最关心的就是content pane 内容窗格

在Java 1.4以及以前会出现这样的异常;不能使用JFrame.add去代替JFrame.getContentPane.add。


绘制组件

绘制一个组件,需要定义一个扩展与JComponent的类,并覆盖paintComponent(Graphics g)方法。getPreferredSize告诉用户组件有多大

  无论何种原因 ,只要窗口发生重绘,事件处理器就会通告组件,从而执行组件的该方法。一定不要自己调用这个方法。当应用程序需要 重绘时,就会自动调用这个方法,不要人为的干预这个自动的处理 过程

  何种类型会触发这个自动的相应过程呢?窗口最大化或最小化又恢复窗口大小时;改变窗口大小;若用户弹出另一个窗口,并且这个窗口覆盖原窗口,则原窗口被破坏,需要重绘(窗口系统不会存储下面的像素);强制刷新屏幕,调用repaint 引发相应配置的graphics对象调用所有组件的 paintcomponent




处理2D图片

自从Java SE 1.2版本引入java 2D库,paintComponent的方法自动获得Graphics2D对象 不过需要强制转换

2D库采用面向对象的方式组织图形。所有图形类都实现了 Shape接口


Java2D库采用的是浮点类型,更符合实际。内部很多浮点计算都是采用单精度,毕竟几何计算的目的就是呈现在像素上,单精度足够将误差缩小到1个像素以内。

由于节省空间,以及方便操作的问题,2Dl类库设计者为每个图形类提供了2个版本。Rectangle类是拥有2个具体子类的抽象类,这2个具体子类是它的静态内部类

Rectangle.Double和 Rectangle.Float 。Rectangle类中很多方法参数和返回类型 都是double,例如Float类中的getwidth方法返回的都是double类型


原创粉丝点击