12第12章图形用户界面程序设计入门_第1页
12第12章图形用户界面程序设计入门_第2页
12第12章图形用户界面程序设计入门_第3页
12第12章图形用户界面程序设计入门_第4页
12第12章图形用户界面程序设计入门_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 1 1第12章 图形用户界面程序设计入门 第第 iii篇篇 的必备基础的必备基础 第12章图形界面程序编程 第8章 继承和多态 第13章 创建图形用户界面 第14章 applets, 图像和音频 第9章抽象类和接口 第12章 事件驱动程序- 2 2 2学习目标浏览简单的gui组件 (12.2). 描述 java gui 的api 层次结构 (12.3).使用框架、面板和简单的gui组件创建用户界面 (12.4).理解布局管理器的作用 (12.5).使用 flowlayout, gridlayout, 和 borderlayout 布局管理器在容器中 设置组件的布局 (12.5).使用 co

2、lor 和 font 类 (12.6-12.7).使用 jpanel 创建子容器 (12.8).使用 paintcomponent 方法在面板上画图 (12.9).使用 graphics 类中的绘图方法绘制字符串、直线、矩形、椭圆、弧形、多边形等 (12.9).3 3 3gui 组件/ create a button with text ok jbutton jbtok = new jbutton(ok); / create a label with text enter your name: jlabel jlblname = new jlabel(enter your name: ); /

3、 create a text field with text type name herejtextfield jtfname = new jtextfield(type name here); / create a check box with text boldjcheckbox jchkbold = new jcheckbox(bold); / create a radio button with text redjradiobutton jrbred = new jradiobutton(red); / create a combo box with choices red, gree

4、n, and bluejcombobox jcbocolor = new jcombobox(new stringred, green, blue); 按钮标签文本框复选框单选按钮组合框4 4 4swing vs. awt为什么gui组件的类名都有前缀j呢?为什么不用button,而用jbutton呢?刚引入java的时候,图形组件存放于抽象窗口工具集(awt)。 awt 适合开发简单图形界面,对复杂的gui项目不适用,因为它的解决方案非常适用于底层平台. 随着java 2的发行, awt 逐渐被更稳定、通用、灵活的库取代,即 swing 组件库(swing components). java

5、.awt.window 或 java.awt.panel子类的组件必须使用具体平台上的本地gui来绘制。. 不依赖本地gui的swing 组件成为轻型组件,awt组件称为重型组件 。swing gui组件类的开都有前缀字母j。5 5 5gui 程序所用类的层次结构图dimension font fontmetrics component graphics object color container panel applet frame dialog window jcomponent japplet jframe jdialog swing 组件 javax.swing 包中的 轻型的 重型

6、的 包 java.awt中的类 1 layoutmanager *6 6 6container 类dimension font fontmetrics component graphics object color container panel applet frame dialog window jcomponent japplet jframe jdialog swing components in the javax.swing package lightweight heavyweight classes in the java.awt package 1 layoutmanager

7、 * jpanel container 类用来包含其它组件。7 7 7gui 辅助类dimension font fontmetrics component graphics object color container panel applet frame dialog window jcomponent japplet jframe jdialog swing components in the javax.swing package lightweight heavyweight classes in the java.awt package 1 layoutmanager * jpan

8、el 辅助类是组件和容器用来绘制和放置对象的。8 8 8swing gui 组件 jmenuitem jcheckboxmenuitem abstractbutton jcomponent jmenu jradiobuttonmenuitem jtogglebutton jcheckbox jradiobutton jcombobox jinternalframe jlayeredpane jlist jmenubar joptionpane jpopupmenu jprogressbar jfilechooser jscrollbar jscrollpane jseparator jspli

9、tpane jslider jtabbedpane jtable jtableheader jtextfield jtextcomponent jtextarea jtoolbar jtooltip jtree jrootpane jpanel jpasswordfield jcolorchooser jlabel jeditorpane jspinner jbutton 9 9 9核心组件 jmenuitem jcheckboxmenuitem abstractbutton jcomponent jmenu jradiobuttonmenuitem jtogglebutton jcheckb

10、ox jradiobutton jcombobox jinternalframe jlayeredpane jlist jmenubar joptionpane jpopupmenu jprogressbar jfilechooser jscrollbar jscrollpane jseparator jsplitpane jslider jtabbedpane jtable jtableheader jtextfield jtextcomponent jtextarea jtoolbar jtooltip jtree jrootpane jpanel jpasswordfield jcolo

11、rchooser jlabel jeditorpane jspinner jbutton 101010扩展组件 jmenuitem jcheckboxmenuitem abstractbutton jcomponent jmenu jradiobuttonmenuitem jtogglebutton jcheckbox jradiobutton jcombobox jinternalframe jlayeredpane jlist jmenubar joptionpane jpopupmenu jprogressbar jfilechooser jscrollbar jscrollpane j

12、separator jsplitpane jslider jtabbedpane jtable jtableheader jtextfield jtextcomponent jtextarea jtoolbar jtooltip jtree jrootpane jpanel jpasswordfield jcolorchooser jlabel jeditorpane jspinner jbutton 111111awt 组件awteventfontfontmetricscomponentgraphicsobjectcolorcanvasbuttontextcomponentlabellist

13、checkboxgroupcheckboxchoicecontainerpanelappletframedialogfiledialogwindowtextfieldtextareamenucomponentmenuitemmenubarmenuscrollbarlayoutmanager121212框架framesframe 是不能包含在其它窗口内的窗口.在java gui 程序中,它是包含其他swing用户界面组件的容器。131313创建框架runimport javax.swing.*;public class myframe public static void main(string

14、 args) jframe frame = new jframe(test frame); frame.setsize(400, 300); frame.setvisible(true); frame.setdefaultcloseoperation( jframe.exit_on_close); 141414在 frame中添加组件/ add a button into the frameframe.getcontentpane().add( new jbutton(ok);runmyframewithcomponentstitle barcontent pane151515注内容窗格( c

15、ontent pane)是 container的一个子类 。添加控件也可以使用以下语句:container container = frame.getcontentpane();container.add(new jbutton(ok);内容窗格伴随着jframe对象的创建而创建的,getcontentpane方法简单地返回该内容窗格的引用,可以使用这个引用访问内容窗格。 161616框架居中runcenterframe screenheight screenwidth getheight() getwidth() (x, y) frame screen (0, 0) 默认情况下,框架在屏幕的

16、左上角显示。171717布局管理器java的布局管理器提供了一层抽象,自动把用户界面映射到所有的窗口系统。 java的gui组件在容器中的位置由容器的布局管理器来安排。 使用 setlayout(layoutmanager) 方法在容器中设置布局管理器。 181818布局管理器种类flowlayout (chapter 12)gridlayout (chapter 12)borderlayout (chapter 12)其他布局管理器将在下册介绍。191919flowlayout布局管理器flowlayout布局管理器按照添加的顺序,由左到右将组件排列在容器中,放满一行,就开始新的一行。run

17、202020flowlayout布局管理器showflowlayoutrun使用 flowlayout布局管理器方式212121flowlayout 构造方法 public flowlayout(int align, int hgap, int vgap)根据指定的对齐方式、水平间距和垂直间距构造一个新的flowlayout对象。间距用像素度量。 public flowlayout(int alignment)根据指定的对齐方式构造一个新的flowlayout对象。默认的间距为5个像素。 public flowlayout()构造一个新的flowlayout对象,默认的对齐方式是居中。默认的间

18、距为5个像素。222222gridlayout布局管理器根据构造方法定义的行数和列数,gridlayout布局管理器以网格(矩阵)的形式排列组件。组件按照添加的顺序从左到右排列。showgridlayoutrun232323gridlayout布局管理器使用 gridlayout布局管理器方式showgridlayoutrun242424gridlayout构造方法 public gridlayout(int rows,int columns)指定行和列 public gridlayout(int rows, int columns, int hgap, int vgap)指定行、列、水平间距

19、和垂直间距252525borderlayout布局管理器borderlayout布局管理器将窗口分成5个区:东区、南区、西区、北区和中央。showborderlayoutrun使用add(component,index)方法添加组件, index可以是: borderlayout.east, borderlayout.south, borderlayout.west, borderlayout.north, borderlayout.center. 262626borderlayout布局管理器showborderlayoutrun27272712.6 颜色类 color可以使用 java.a

20、wt.color 类为gui组件设置颜色.颜色由红、绿、蓝三原色组成. color c = new color(r, g, b);例如:color c = new color(228, 100, 255);282828标准颜色java.awt.color中定义了 十三种标准颜色 (black, blue, cyan, darkgray, gray, green, lightgray, magenta, orange, pink, red, white, yellow). 从jdk 1.4, 修改了常量命名习惯,可以使用: black, blue, cyan, dark_gray, gray,

21、green, light_gray, magenta, orange, pink, red, white, and yellow.292929设置颜色可以使用如下方法设置前景色和背景色:setbackground(color c) setforeground(color c)example:jbt.setbackground(color.yellow);jbt.setforeground(color.red);30303012.7 font 类font myfont = font(name, style, size);example:font myfont = new font(sansser

22、if , font.bold, 16);font myfont = new font(serif, font.bold+font.italic, 12);jbutton jbtok = new jbutton(ok“);jbtok.setfont(myfont);字体名:所有平台都支持的字体: sansserif, serif, monospaced, dialog, or dialoginput.字型font.plain (0), font.bold (1), font.italic (2), and font.bold + font.italic (3)313131查找所有可以使用的字体g

23、raphicsenvironment e = graphicsenvironment.getlocalgraphicsenvironment();string fontnames = e.getavailablefontfamilynames();for (int i = 0; i fontnames.length; i+) system.out.println(fontnamesi);32323212.8 使用面板作为子容器可以使用 new jpanel() 创建一个带默认布局管理器 flowlayout 的面板,也可以使用 new jpanel(layoutmanager) 创建一个指定布

24、局管理器的面板. 使用 add(component) 方法给面板添加一个组件.jpanel p = new jpanel();p.add(new jbutton(ok);给jframe添加组件,实际上添加到了的内容窗格中.333333example 12.4 panels示例使用面板组织组件. 创建一个微波炉的用户界面。testpanelsrun a button a textfield 12 buttons frame p2 p1 34343412.9 在面板上绘制图形 jpanel 可以用作组织组件的小容器,另一个重要的作用是绘制图形. 要在面板上画图,需要创建一个由 jpanel 扩展的

25、新类,并且覆盖paintcomponent 方法告知面板如何画图。 在面板上可以显示文字、绘制图形和图像. 353535paintcomponent 方法paintcomponent 方法的头标志:protected void paintcomponent(graphics g)the graphics 对象由jvm为每个gui组件自动创建。绘制字符串:public void drawstring(string string, int x, int y)363636在面板上绘制图形public class drawmessage extends jpanel /* main method */

26、 public static void main(string args) jframe frame = new jframe(drawmessage); frame.getcontentpane().add(new drawmessage(); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setsize(300, 200); frame.setvisible(true); /* paint the message */ protected void paintcomponent(graphics g) super.p

27、aintcomponent(g); g.drawstring(welcome to java!, 40, 40); run(40, 40)373737java 坐标系统 (0, 0) x axis y axis (x, y) x y java 坐标系统x axis 传统坐标系统 (0, 0) y axis 383838注graphics类是提供设备无关图形界面的一个抽象类,它可以在不同平台的屏幕上显示图形和图像。无论何时,只要显示一个组件,就会为它创建一个对象graphics(即图形环境)。当组件第一次显示或需要重新显示的时候, paintcomponent方法会被自动调用来绘制图形环境。为了

28、确保在一幅新图显示之前视图区域是干净的,有必要调用super.paintcomponent(g)方法。393939绘制几何图形绘制直线绘制矩形绘制椭圆绘制弧形绘制多边形404040绘制直线drawline(int x1, int y1, int x2, int y2); (0, 0) (getwidth(), 0) (getwidth(), getheight() (0, getheight() (x1, y1) (x2, y2) 414141绘制矩形drawrect(int x, int y, int w, int h); fillrect(int x, int y, int w, int h);(x, y)w h (x, y) w h 424242绘制圆角矩形drawroundrect(int x, int y, int w, int h, int aw, int ah);fillroundrect(int x, int y, int w, int h, int aw, int ah); (x, y) w h ah/2 aw /2 drawrectanglesrun434343绘制椭圆drawoval(int x, int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论