收藏 分享(赏)

21Java GUI程序设计(一).ppt

上传人:hyngb9260 文档编号:7800459 上传时间:2019-05-26 格式:PPT 页数:27 大小:437KB
下载 相关 举报
21Java GUI程序设计(一).ppt_第1页
第1页 / 共27页
21Java GUI程序设计(一).ppt_第2页
第2页 / 共27页
21Java GUI程序设计(一).ppt_第3页
第3页 / 共27页
21Java GUI程序设计(一).ppt_第4页
第4页 / 共27页
21Java GUI程序设计(一).ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、Java GUI程序设计,Java GUI编程介绍 两种主要的容器:Frame/Panel Awt中的布局管理(上) Awt中的布局管理(下) 在awt中绘图,AWT (Abstract Window Tools),GUI(Graphics User Interface):图形用户界面 AWT (Abstract Window Tools):抽象窗口工具,java.awt包,在这个包中,提供了基本的java程序GUI设计工具: Component/MenuComponent Container LayoutManager,Object,Component,TextField,Container

2、,Others,Button,Container(容器),容器(Container)实际上是Component的子类,因此容器类对象本身也是一个组件,具有组件的所有性质,另外还具有容纳其它组件和容器的功能。 容器类对象可使用方法add()添加组件 两种主要的容器类型 Window:可独立存在的顶级窗口 Panel:可作为容器容纳其它组件,但不能独立存在,必须被添加到其它容器中(如Window 或 Applet),Container层次关系图,Container,Panel,Applet,Window,Frame,ScrollPane,Dialog,Container常用方法,add() set

3、Location() setSize() setBoundes() setVisible() pack(),组件定制,组件的大小和位置由布局管理器(LayoutManager)决定。 不使用布局管理器则可以定制组件的大小和位置,但必须在容器中使用组件的setLocation(), setSize(), setBounds()方法确定大小位置,Frame类,是Window类的子类 有标题,可通过拖拉改变大小 初始化时为不可见,可用setVisible(true)使其显示出来 使用BorderLayout作为其缺省布局管理器 使用setLayout方法改变布局管理器,Frame类例子(示例11-1

4、),import java.awt.*; public class MyFrame public static void main(String args) Frame f=new Frame(“Hello,My Frame!“);f.setSize(200,200);f.setVisible(true); ,Frame例子(con.),Panel,为放置组件提供空间 允许使用自己的布局管理器 不能单独存在,必须放置到其他容器中,Panel例子(示例11-2),import java.awt.*; public class MyPanel public static void main(Str

5、ing args)/define a labelLabel l=new Label(“This Label“);/define a panelPanel p=new Panel();/set the panels sizep.setSize(200,100);/add the label to the panelp.add(l);/define a frameFrame f=new Frame(“Hello,my panel!“);f.setSize(200,200);/add the panel “p“ to the Frame “f“f.add(p);/pack the componets

6、 togetherf.pack();f.show(); ,Container的布局管理器,为了使我们生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局管理器这个工具来管理组件在容器中的布局,而不使用直接设置组件位置和大小的方式。,Container的布局管理器(con.),Awt中的布局管理器有: FlowLayout BorderLayout GridLayout CardLayout GridBagLayout,FlowLayout,GUI Component从左到右按顺序配置在Container中,若到达右边界,则会折回到下一行中 FlowLayout是Panel和App

7、let的默认管理器 FlowLayout()/ FlowLayout(int align)/ FlowLayout(int align,int hgap,int vgap) FlowLayout.LEFT/ FlowLayout.CENTER/ FlowLayout.RIGHT 默认为靠中对齐 使用组件的理想尺寸,FlowLayout 例子(示例11-3),import java.awt.*; public class MyFlowLayout extends Frame private Button leftButton,centerButton,rightButton;public MyF

8、lowLayout()super(“My FlowLayout Test“);/定义按钮leftButton=new Button(“左“);centerButton=new Button(“中“);rightButton=new Button(“右“);/居中对齐setLayout(new FlowLayout(FlowLayout.CENTER);/加上按钮add(leftButton);add(centerButton);add(rightButton);/设置大小setSize(200,100);/显示show();public static void main(String args

9、)MyFlowLayout app=new MyFlowLayout(); ,BorderLayout,BorderLayout将Container分为EAST、SOUTH、WEST、NORTH、CENTER五个区域,Component可以放置在这五个区域的任何一个 BorderLayout是Frame、Dialog的默认管理器 如果在一个区域中放入多个Component,后放入的Component会把前面的覆盖 BorderLayout()/ BorderLayout(int hgap,int vgap)BorderLayout.EAST、BorderLayout.SOUTH、BorderL

10、ayout.WEST、BorderLayout.SOUTH、BorderLayout.CENTER,BorderLayout(con.),BorderLayout布局格式:当改变容器大小时 North, South和Center区域水平调整 East, West和Center区域垂直调整,North,South,West,East,Center,BorderLayout例子(示例11-4),import java.awt.*;public class MyBorderLayout extends Frame private String name=“东“,“南“,“西“,“北“,“中“;pri

11、vate Button button=new Buttonname.length;public MyBorderLayout()super(“My BorderLayout Test“);for (int i=0;iname.length;i+)buttoni=new Button(namei);/设置布局BorderLayout,水平和垂直间隙均为5setLayout(new BorderLayout(5,5);/加上按钮add(button0,BorderLayout.EAST);add(button1,BorderLayout.SOUTH);add(button2,BorderLayou

12、t.WEST);add(button3,BorderLayout.NORTH);add(button4,BorderLayout.CENTER);setSize(300,200);show();public static void main(String args)MyBorderLayout app=new MyBorderLayout(); ,GridLayout,GridLayout将Component配置在纵横格线分割的格子中,从左到右,从上到下; 构造器:GridLayout()/ GridLayout(int rows,int cols)/ GridLayout(int rows,

13、int cols,int hgap,int vgap),GridLayout例子(示例11-5),import java.awt.*; public class MyGridLayout extends Frame private String name=“0“,“1“,“2“,“3“,“4“,“5“,“6“,“7“,“8“,“9“,“+“,“-“,“*“,“/“,“.“;private Button button=new Buttonname.length;public MyGridLayout()super(“My GridLayou Test:Caculator“);/三行五列的布局,水

14、平和垂直间隙均为4setLayout(new GridLayout(3,5,4,4);for (int i=0;iname.length;i+)buttoni=new Button(namei);this.add(buttoni);setSize(250,150);show();public static void main(String args)MyGridLayout app=new MyGridLayout(); ,CardLayout,将加入到Container中的Component看成一叠卡片,只有最上面的那个Componet才可见 构造器:CardLayout()/ CardLa

15、yout(int hgap,int vgap) 控制组件可见的方法:first(Container target) / last(Container target) /previous(Container target) /next(Container target) /show(Container target,String name),CardLayout例子(示例11-6), cardLayout1=new CardLayout();cp=new Panel();cp.setLayout(cardLayout1);for(int i=0;iname.length;i+)/定义卡片(Lab

16、el)cardi=new Label(namei);/把这些卡片加到cp这个Panel中cp.add(namei,cardi); ,CardLayout例子(con.),在 awt中画图,通常,创建Canvas类或Panel的子类,并覆盖paint方法 每当组件出现时调用paint方法每个组件都有一个Graphics对象 Graphics类实现了很多绘图方法,AWT中的坐标,(0,0),(x,y),x轴,y轴,在awt中画图例子(示例11-7),class DrawingPanel extends Panel public void paint(Graphics g) /绘制矩形g.drawRect(50,50,70,70);/绘制圆角矩形g.drawRoundRect(110,10,50,30,20,10); ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报