一、swing概述:swing基于AWT架构之上,Swing是指被绘制的用户界、面类,AWT是指像事件处理这样的窗口工具箱的底层机制,Swing可以让用户随意的选择喜欢的感官。
二、框架:没有包含在其他窗口中的窗口被称为框架(frame),在AWT中有一个Frame类,是用来描述框架的,这个类在Swing版本中是JFrame(绝大数的Swing组件都有J开头),它
是极少数几个不绘制在画布上的Swing组件之一,它的修饰部件(如按钮,标题栏,图标等)由用户的窗口系统绘制,而不是由Swing绘制,Swing用来绘制框架里的内容。
JFrame.setVisible(true)方法可以让框架可见,JFrame.show()可以让框架可见并且置于其他窗口的前面。JFrame.setDefaultCloseOperation(int i)可以定义关闭这个框架时候的响应动作,让程序退出的常量是JFrame.EXIT_ON_CLOSE。(以上方法都不是静态方法!)在初始化完后,main方法退出,这个时候程序并没有终止,终止的只是主线程,事件调度线程保持程序处于激活状态,直到关闭框架或者调用System.exit。
改变框架:
1、Component类:setVisible(boolean bool)设置窗口是否显示;set||getSize(int w,int h||Dimension d)设置/获取大小; set||getLocation(int x,int y)设置获取位置,setBounds(int x,int y,int w,int h)设置位置和大小。
2、windows类:toBack()将窗口移动到桌面窗口栈的后面 ;toFront()将窗口移动到桌面的前面;setLocationByPlatfrom(boolean bool)由平台选择一个合适的位置显示窗口。
3、Frame类: isResizable(boolean bool)是否可以让用户改变大小;setTitle(String str)设置标题;setIconImage(Image img)设置框架的图标。
setUndecorate(boolean bool)框架显示中的标题栏以及关闭按钮这些是否显示;setExtendedState(int state)设置窗口的状态,如Frame.ICONIFIED可以让窗口最小化。
4、Toolkit类:getDefaultToolkit()返回一个默认的工具箱;Dimension getScreen()返回用户屏幕的尺寸; Image getImage(String filename)加载得到一个指定的图像对象。
三、绘制组件:绘制一个组件,需要定义一个扩展JComponent的类,并覆盖其中的paintComponent(Graphics g)方法,在JAVA中,所有的绘制都必须使用Craphics对象。只要窗口需要重新绘图时,事件处理器就会通告组件,从而执行所有组件的paintComponent方法。不用自己调用paintComponent方法,在应用程序需要重新绘图的时候,这个方法会自动的被调用,如果需要强制重新绘制组件,那么要调用的是repaint方法,他将引发采用相应配置的Graphics对象调用所有组件的paintComponent方法。
1、JFrame类:getContentPane()返回框架里的内容窗口;add(Component comp)将一个给定的组件添加到该框架的内容窗口中。
2、Component类:repaint()重新绘制组件。
3、JPanel类是一个可以包含其他组件的容器,但同样也可以在其上面进行绘制。
四、绘制2D图形:主要是用java.awt.Graphics2D类去绘制图形的。图形的类主要在java.awt.geom里。要掌握这些之间的关系。paintComponent方法可以自动获得一个Graphics对象,可以把他强制转型成Graphics2D对象。以下是java.awt.geom包里的类:
Point2D类:用于描述一个点的抽象类,包含了2个内部静态类(也是其子类):Double,Float分别用给定的双精度浮点数和浮点数位置去构造一个点。point类继承point2D类,并
且是用整型数去构造一个点。
Shape接口:图形类的接口(不包括Point2D类),RectangularShape类继承该接口。
RectangularShape抽象类:包含很多获取闭合矩形图像位置信息的方法:getCenterX() getCenterY() getMinX() getMinY() getMaxX() getMaxY()返回闭合矩形的中心,以及最小、最大X和Y坐标值。setFrame()几个重载的方法将此 Shape 的框架矩形设置为指定的 Rectangle2D。
Rectangle2D抽象类:继承RectangularShape抽象类,包含了2个内部静态类(也是其子类):Double,Float分别用给定的双精度浮点数和浮点数(左上角x坐标,左上角y坐标,长、宽)去构造一个矩形,也可以先用不带参数的构造器构造一个空的矩形,然后用方法setFrameFromDiagonal(point x,point y)参数表示对角的2个点去构造一个矩形,也可以是用setFrameFromDiagonal(px,py,qx,qy)参数表示对角点的X,Y坐标去构造一个矩形,该方法属于RectangularShape抽象类。Rectangle类继承Rectangle2D类,并且是用整型数去构造一个矩形。
Ellipse2D抽象类:继承RectangularShape抽象类,包含了2个内部静态类(也是其子类):Double,Float分别用给定的双精度浮点数和浮点数(左上角x坐标,左上角y坐标,长、宽)去构造一个椭圆,也可以先用不带参数的构造器构造一个空的椭圆,然后用方法setFrameFromCenter(point center,point x)参数表示一个中心点坐标,和一个角坐标去构造一椭圆,该方法属于RectangularShape抽象类,也可以用setFrame()去设置一个外围的闭合矩形,然后构造椭圆。
Line2D抽象类:继承Shape接口,用于描述一条直线的抽象类,包含了2个内部静态类(也是其子类):Double,Float分别用给定的双精度浮点数和浮点数位置去构造一条直线,4个参数,分别表示起始点的X,Y坐标和结束点的X,Y坐标,参数也可以是2个point2D的对象,分别表示起始点和结束点。point类继承point2D类,并且是用整型数去构造一个点。
注意:只有Point2D和Rectangle2D这两个类有实现类Point和Rectangle用来用整型数绘图。可以用drawPolygon(int[],int[],int)绘制多边形,详情可以查看API文档。
五、颜色:在每次绘制前都可以用Graphics2D的对象去调用setPaint,指定一种颜色去绘制图形,在后面的draw绘制图形时都是用指定的颜色,也可以用fill去用这种颜色填充图形。Color类里面有常量表示一些常用的颜色,也可以new Color(int r,int p,int g)构造一个颜色,SystemColor里面也有很多表示系统颜色的常量。
六、图像:可以用ImageIO类里的静态方法read去读取图像,参数可以是File对象也可以是URL对象。
Graphics类:绘制图像用drawImage(Image,int x,int y,ImageObserver observer)参数是:要绘制的对象,左上角的X坐标,左上角的Y坐标,绘制进程中以通告为目的的对象。
drawImage(Image,int x,int y,int width,int height,ImageObserver observer)多的两个参数表示图像的宽和高。
copyArea(int x,int y,int width,int height,int dx,int dy)从屏幕坐上角X坐标和Y坐标的位置开始拷贝屏幕的一块高为width宽为height的区域到另一块与他相隔水平距离为dx垂直距离为dy的区域。
分享到:
相关推荐
全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、泛型程序设计、集合以及多线程等内容。. 全书对Java...
《仓库管理源代码——JAVA程序设计》是华中科技大学一项四年的课程设计项目,旨在让学生通过实际编程经验,深入理解仓库管理系统的设计与实现。在这个项目中,学生将使用Java编程语言,结合数据库技术,构建一个完整...
Java的基础知识包括其历史背景、主要特点、不同版本及其重要组件,如JDK、JRE和JVM。 1. **Java的起源**: Java起源于1995年,由James Gosling等人在Sun Microsystems公司开发。它的设计目标是创建一种简洁、面向...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
《KJava深入浅出——Java在PDA上的程序设计》一书主要涵盖了Java技术在掌上设备(PDA)上的应用开发,旨在帮助开发者理解和掌握KJava编程的基础知识和实战技巧。KJava是Java Micro Edition (Java ME)的一个分支,...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
总的来说,这个【Java的组播聊天室——图形界面】项目综合展示了Java的网络编程、多线程、GUI设计以及多播技术的应用,对于学习和理解这些技术有很好的实践价值。通过分析和研究这个项目,开发者可以提升自己在这些...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
《Java语言程序设计——基础篇》是Java语言的经典教材,中文版分为《Java语言程序设计基础篇》和《Java语言程序设计进阶篇》主要介绍语法结构、面向对象程序设计基础知识到面向对象程序设计、图形用户界面设计、异常...
Java程序设计是信息技术领域中的重要组成部分,特别是在全国信息技术应用水平大赛这样的高级别竞赛中,它占据了核心地位。第六届全国信息技术应用水平大赛以JAVA程序设计为主题,意味着参赛者需要深入理解和熟练掌握...
在本JAVA课程设计项目中,我们专注于开发一个记事本程序,它涵盖了基本文本编辑器的所有核心功能。这个记事本程序用Java编程语言编写,展现了Java在创建桌面应用程序方面的强大能力。以下是对该程序各个关键知识点的...
1. Java基础知识:Java是一种广泛使用的面向对象的编程语言,其设计思想是“一次编写,到处运行”。Java语言最早由Sun Microsystems公司于1995年发布。它支持面向对象的编程范式,并且具有自动垃圾收集机制。Java也...
在本项目"Java程序设计——学生成绩查询"中,我们关注的是利用Java语言来实现一个功能完善的学生成绩查询系统。这个系统的核心是能够连接到数据库,从中检索并显示学生的成绩信息。以下是对这个项目涉及的主要知识点...
本版也不例外,它反映了Java SE 6的新特性,全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、泛型程序...
通过这个项目,学生可以深入理解面向对象编程、事件处理、图形用户界面(GUI)设计等核心Java技术。 首先,我们需要了解Java的基础知识。Java是一种跨平台的编程语言,以其“一次编写,到处运行”的特性而闻名。它...