Java程序设计中文12slide_第1页
Java程序设计中文12slide_第2页
Java程序设计中文12slide_第3页
Java程序设计中文12slide_第4页
Java程序设计中文12slide_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

Chapter12图形用户界面基础1ObjectivesTodistinguishsimpleGUIcomponents(§12.2).TodescribetheJavaGUIAPIhierarchy(§12.3).Tocreateuserinterfacesusingframes,panels,andsimpleUIcomponents(§12.4).Tounderstandtheroleoflayoutmanagers(§12.5).TousetheFlowLayout,GridLayout,andBorderLayoutmanagerstolayoutcomponentsinacontainer(§12.5).TospecifycolorsandfontsusingtheColorandFontclasses(§12.6-12.7).TouseJPanelassubcontainers(§12.8).2引言学习本章有两个目的:介绍JavaGUI程序设计的基础知识。JavaGUIAPI的框架结构,GUI组件及组件间相互关系,容器和布局管理器,颜色,字体,边界,图像图标,工具提示等。使用GUI演示面向对象程序设计。3Swingvs.AWT前面我们已经使用过像JButton、JLabel等GUI组件,为何上述例子的GUI组件的类名都是有前缀J呢?如Button命名为JButton。事实上,在包java.awt中已经有了名为Button类。刚引入Java的时候,和图形相关的类在AWT包中,但AWT的组件的外观需要调用操作系统的类库来绘制,所以非常依赖底层平台,称之为重组件。为更少地依赖底层平台,Java推出新的图形包Swing,其组件称为轻组件。为区别两类组件,Swing组件类名都有前缀字母J。4GUI类继承层次(Swing)5ContainerClassesContainer类能包含其它的GUIcomponents.6辅助类不是Component的子类,它们一般用来描述GUIcomponents类的属性,诸如图形环境,颜色,字体,以及大小.GUI辅助类7SwingGUIComponents8Frames(框架)框架是一个不能包含在其它窗口中的窗口。它是一个基础容器类,用于在JavaGUI应用中盛装其它GUI组件。框架在Swing中是JFrame类。9JFrameClass10CreatingFramesRunimportjavax.swing.*;publicclassMyFrame{publicstaticvoidmain(String[]args){JFrameframe=newJFrame("TestFrame");frame.setSize(400,300);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}MyFrame11ContentPaneinJDK1.5//Addabuttonintotheframeframe.getContentPane().add(newJButton("OK"));RunMyFrameWithComponentsTitlebarContentpane//Addabuttonintotheframeframe.add(newJButton("OK"));12LayoutManagers在许多窗口系统,通过使用硬编码的像素尺寸来安排用户界面组件。例如,将一个按钮入在窗口(10,10)位置处。使用硬编码的像素尺寸,如果换一个不同分辨率的系统,用户界面将发生变化。.Java的布局管理器提供了一层抽象,自动把用户界面映射到所有的窗口系统。Java的GUI组件在容器中如何放置,由容器的布局管理器来安排。前面的例子中,并没有指定OK按钮放在框架中什么位置,但是后台工作的布局管理器能够将组件放到正确的位置。

布局管理器使用布局管理器类创建,每个布局管理器类都实现LayoutManager接口。使用setLayout(LayoutManager)方法在容器中设置布局管理器 LayoutManagerlayoutManger=newXxxLayout(); container.setLayout(layoutManger);13KindsofLayoutManagersFlowLayout(Chapter12)GridLayout(Chapter12)BorderLayout(Chapter12)其它的布局类将在第26章介绍14FlowLayout编写程序往一个框架的内容窗格中添加三个标签和三个文本框,使用FlowLayout

布局管理器。

ShowFlowLayoutRun15TheFlowLayoutClass16GridLayoutExample在前例基础上使用GridLayout管理器取代FlowLayout管理器重新布局.ShowGridLayoutRun17TheGridLayoutClass18TheBorderLayoutManagerBorderLayout

管理器将容器分为5个区域:East,South,West,North,andCenter.组件使用add方法添加到指定的区域。add(Component,constraint),whereconstraintisBorderLayout.EAST,BorderLayout.SOUTH,BorderLayout.WEST,BorderLayout.NORTH,orBorderLayout.CENTER.

19BorderLayoutExampleShowBorderLayoutRun20TheBorderLayoutClass21使用Panels作子容器Panels是透明的子容器,用来对组件进行分组放置

。一般将用户组件放置在panels中,然后再将panels放置在框架内,甚至可将panels再放置到另外的panels中。panels直接调用add方法可将组件添加到panels。panels默认的布局是FlowLayout22CreatingaJPanel可以调用JPanel的构造方法newJPanel()

来创建默认的FlowLayout

布局的面板,或者newJPanel(LayoutManager)

来创建具有指定布局管理器的面板。例如:JPanelp=newJPanel();p.add(newJButton("OK"));23TestingPanelsExample本例使用JPanel来分组不同的用户组件TestPanelsRun24TheColorClass可以使用java.awt.Color

类为GUI组件设置颜色。颜色由红、绿、蓝三基色构成,每种基色的强度都用一个无符号的byte值表示,从0(最暗)到255(最亮),这就是RGB模式。可以使用Color类的构造方法:Colorc=newColor(r,g,b);Example:Colorc=newColor(228,100,255);25标准色十三种标准色(black,blue,cyan,darkGray,gray,green,lightGray,magenta,orange,pink,red,white,yellow)在java.awt.Color类中定义为类常量。上述标准色常量名不符合Java的命名规范,所以自JDK1.4起,也定义了相同的标准色常量:BLACK,BLUE,CYAN,DARK_GRAY,GRAY,GREEN,LIGHT_GRAY,MAGENTA,ORANGE,PINK,RED,WHITE,andYELLOW.26SettingColors可以使用下列方法给组件设置背景和前景色:setBackground(Colorc)setForeground(Colorc)Example:jbt.setBackground(Color.yellow);jbt.setForeground(Color.red);27TheFontClassFontmyFont=newFont(name,style,size);Example:FontmyFont=newFont("SansSerif",Font.BOLD,16);FontmyFont=newFont("Serif",Font.BOLD+Font.ITALIC,12);JButtonjbtOK=newJButton("OK“);jbtOK.setFont(myFont);FontNames所有平台支持的标准字体名字:SansSerif,Serif,Monospaced,Dialog,orDialogInput.FontStyleFont.PLAIN(0),Font.BOLD(1),Font.ITALIC(2),andFont.BOLD+Font.ITALIC(3)28获得所有可用的字体名字GraphicsEnvironmente=GraphicsEnvironment.getLocalGraphicsEnvironment();String[]fontnames=e.getAvailableFontFamilyNames();for(inti=0;i<fontnames.length;i++)System.out.println(fontnames[i]);29Swing组件的一般属性30Borders可以给JComponent

类的任何对象设置边界。使用newTitledBorder(Stringtitle)创建一个带标题的边界,使用newLineBorder(Colorcolor,intwidth)创建线边界,width

表明线的粗细.下列代码设置面板的边界为标题边界:JPanelpanel=newJPanel();panel.setBorder(newTitleBorder(“MyPanel”));31TestSwingCommonFeaturesComponentPropertiesfontbackgroundforegroundpreferredSizeminimumSizemaximumSizeJComponentPropertiestoolTipTextborderTestSwingCommonFeaturesRun32ImageIcons图标一般是大小固定的图片,比较小,用来装饰组件。图像存储在图像文件中,Java目前支持三种图像格式:GIF、JPEG和PNG。javax.swing.ImageIcon

类表示图像图标,可以用

newImageIcon(filename

温馨提示

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

评论

0/150

提交评论