欢迎来到天天文库
浏览记录
ID:34113530
大小:674.79 KB
页数:162页
时间:2019-03-03
《面向对象java程序设计 第10章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章高级组件GUI设计第10章高级组件GUI设计10.1界面布局管理10.2键盘事件(KeyEvent)10.3鼠标事件(MouseEvent)10.4窗口与面板10.5菜单设计10.6对话框设计第10章高级组件GUI设计10.1界面布局管理从前面的例子我们可以看出,容器中的基本组件都是被简单地加入到了容器,那时我们无法设计和控制这些组件在容器中的相互位置,从而导致了某些界面不合理。而Java语言中提供的布局编辑类,其目的正是为了将组件排列在容器中合适的位置上。Java.awt包中共定义了五种布局编辑类,分别是FlowLayout,B
2、orderLayout,CardLayout,GridLayout和GridBagLayout。每个布局编辑类对应一种布局策略,这五个类都是java.lang.Object类的直接子类。Javax.swing包中定义了4种布局编辑类,分别是BoxLayout、ScrollPaneLayout、ViewportLayout和OverlayLayout。下面将讨论FlowLayout,BorderLayout,CardLayout,GridLayout和BoxLayout几种常用的布局策略。第10章高级组件GUI设计10.1.1BorderL
3、ayoutjava.BorderLayout类是java.lang.Object类的直接子类。BorderLayout布局策略是把容器内的空间划分为东、西、南、北、中五个区域(如图10.1所示)。这五个区域分别用字符串常量East、West、South、North、Center表示。向这个容器内每加入一个组件都应该指明把它放在容器的哪个区域中。分布在北部和南部区域的组件将横向扩展至占据整个容器的长度;分布在东部和西部的组件将伸展至占据容器剩余部分的全部宽度;最后剩余的部分将分配给位于中央的组件。如果某个区域没有分配组件,则其他组件可以占据
4、它的空间。例如,如果北部没有分配组件,则西部和东部的组件将向上扩展到容器的最上方;如果西部和东部没有分配组件,则位于中央的组件将横向扩展到容器的左右边界。BorderLayout是JApplet的缺省布局策略。第10章高级组件GUI设计BorderLayout类有两个构造方法,分别是无参数的BorderLayout()和带参数的BorderLayout(inthgap,intvgap)。前者创建一个各组件间的水平、垂直间隔为0的BorderLayout类的对象;后者创建一个各组件间的水平间隔为hgap、垂直间隔为vgap的BorderLa
5、yout类的对象。BorderLayout仅指定了五个区域的位置,如果容器中需要加入的组件超过五个,就必须使用容器的嵌套或改用其他的布局策略。让我们先来看一个例子。第10章高级组件GUI设计【示例程序c10_1.java】使用BorderLayout布局策略在五个位置分别加入了四个按钮和一个标签,当点击按钮时,标签的文本就是按钮的标签的文本。importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassc10_1extendsJAppletimplements
6、ActionListener{JButtonbt1=newJButton("北部"),第10章高级组件GUI设计bt2=newJButton("西部"),bt3=newJButton("东部"),bt4=newJButton("南部");JLabellb1=newJLabel("中部");Containercp=getContentPane();publicvoidinit(){//设置BorderLayout布局,组件间隔为10cp.setLayout(newBorderLayout(10,10));cp.add("North",bt1
7、);//将bt1放置于北区bt1.addActionListener(this);第10章高级组件GUI设计cp.add("West",bt2);//将bt2放置于西区bt2.addActionListener(this);cp.add("East",bt3);//将bt3放置于东区bt3.addActionListener(this);cp.add("South",bt4);//将bt4放置于南区bt4.addActionListener(this);cp.add("Center",lb1);//将bt5放置于中区}第10章高级组件GU
8、I设计publicvoidactionPerformed(ActionEvente){if(e.getSource()==bt1)lb1.setText("按钮1");elseif(e.get
此文档下载收益归作者所有