已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.3使用布局管理器,主讲教师:董婷,一、知识能力目标,1.理解容器的概念及层次;2.掌握常用布局管理器的使用;3.运用布局管理器设计布局美观的GUI程序,二、项目14电子日历,显示2008年的电子日历,1.程序代码,importjava.util.Calendar;importjava.util.*;importjava.awt.*;importjava.awt.event.*;importjava.applet.*;publicclassCalendarMainClasspublicstaticvoidmain(Stringargs)CalendarFrameframe=newCalendarFrame();frame.setBounds(100,100,360,300);/设置窗体位置大小frame.setVisible(true);/设置窗体可见frame.validate();frame.addWindowListener(newWindowAdapter()publicvoidwindowClosing(WindowEvente)System.exit(0););,classCalendarBean/创建用于判断年月日之间关系的类CalendarBeanStringday;intyear=2008,month=0;publicvoidsetYear(intyear)/设置年份的方法this.year=year;publicintgetYear()/获得年份的方法returnyear;publicvoidsetMonth(intmonth)/设置月份的方法this.month=month;publicintgetMonth()/获得月份的方法returnmonth;,publicStringgetCalendar()Stringa=newString42;Calendar日历=Calendar.getInstance();日历.set(year,month-1,1);int星期几=日历.get(Calendar.DAY_OF_WEEK)-1;intday=0;if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)day=31;if(month=4|month=6|month=9|month=11)day=30;if(month=2)/判断月份是否为2月if(year%4=0),elseday=28;for(inti=星期几,n=1;i星期几+day;i+)ai=String.valueOf(n);n+;returna;classCalendarFrameextendsFrameimplementsActionListener/创建日历界面类CalendarFrameLabellabelDay=newLabel42;ButtontitleName=newButton7;Stringname=日,一,二,三,四,五,六;ButtonnextMonth,previousMonth;intyear=2008,month=2;CalendarBeancalendar;LabelshowMessage=newLabel(,Label.CENTER);,publicCalendarFrame()PanelpCenter=newPanel();/创建pCenter面板pCenter.setLayout(newGridLayout(7,7);/将pCenter的布局设置为7行7列的GridLayout布局for(inti=0;i7;i+)titleNamei=newButton(namei);pCenter.add(titleNamei);for(inti=0;i42;i+)labelDayi=newLabel(,Label.CENTER);pCenter.add(labelDayi);calendar=newCalendarBean();calendar.setYear(year);calendar.setMonth(month);Stringday=calendar.getCalendar();for(inti=0;i12)month=1;calendar.setMonth(month);Stringday=calendar.getCalendar();for(inti=0;i42;i+)labelDayi.setText(dayi);elseif(e.getSource()=previousMonth)/单击上月按钮时刷新日期month=month-1;if(month1)month=12;calendar.setMonth(month);Stringday=calendar.getCalendar();,for(inti=0;i42;i+)labelDayi.setText(dayi);showMessage.setText(当前是:+calendar.getYear()+年+calendar.getMonth()+月);,2.相关知识,流布局(FlowLayout)呈水平放置,直到同一条线上再也没有适合的控件对齐方式由align属性确定。可能的值为:LEFTRIGHTCENTERLEADINGTRAILING,边界布局(BorderLayout)对容器组件进行安排,并调整其大小,使其符合下列五个区域:南、北、东、西和中间区域,网格布局(GridLayout)以矩形网格形式对容器的组件进行布置容器被分成大小相等的矩形,一个矩形中放置一个组件,卡片布局(CardLayout)将容器中的每个组件看作一张卡片,三、项目15使用网格袋布局,使用网格袋布局管理器,将窗体中的控件进行如图布局设计,1.程序代码,importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;classGBCextendsGridBagConstraintsprivatestaticfinallongserialVersionUID=6657272964185905015L;/设置网格座标参数publicGBC(intx,inty)this.gridx=x;this.gridy=y;/设置网格座标和占的网格数publicGBC(intgridx,intgridy,intgridwidth,intgridheight)this.gridx=gridx;this.gridy=gridy;this.gridwidth=gridwidth;this.gridheight=gridheight;,publicGBCsetAnchor(intanchor)this.anchor=anchor;returnthis;publicGBCsetFill(intfill)this.fill=fill;returnthis;/设置单元网格大小publicGBCsetWeight(doubleweightx,doubleweighty)this.weightx=weightx;this.weighty=weighty;returnthis;/设置网格之间的相互距离publicGBCsetInset(intdistance)this.insets=newInsets(distance,distance,distance,distance);returnthis;,/设置网格之间的相互距离publicGBCsetInset(inttop,intleft,intbottom,intright)this.insets=newInsets(top,left,bottom,right);returnthis;/设置网格的初始位置publicGBCsetIpad(intipadx,intipady)this.ipadx=ipadx;this.ipady=ipady;returnthis;publicclassGridBagLayoutTestextendsJFrame/*序列化序号privatestaticfinallongserialVersionUID=6763277356654198370L;publicGridBagLayoutTest()this.setTitle(“GridBagLayoutTest”);/窗体标题this.setSize(400,150);/窗体大小,/设置窗体居中显示在屏幕上Dimensionsize=Toolkit.getDefaultToolkit().getScreenSize();this.setLocation(int)(size.getWidth()-this.getWidth()/2,(int)(size.getHeight()-this.getHeight()/2);/初始化窗口面板this.initial();/设置窗体为不可改变大小this.setResizable(false);/设置窗体为显示this.setVisible(true);/初始化窗体上的面板publicvoidinitial()JPanelpanel=newJPanel();panel.setLayout(newGridBagLayout();/设置所有控件所占网格的大小,位置,座标,对齐方式,panel.add(newJScrollPane(newJTextArea(),newGBC(0,0,2,3).setWeight(10,0).setFill(GBC.BOTH);panel.add(newJButton(按钮一),newGBC(2,0,2,1).setWeight(5,0).setFill(GBC.BOTH);panel.add(newJButton(按钮二),newGBC(2,1).setWeight(5,0).setFill(GBC.BOTH);panel.add(newJButton(按钮三),newGBC(3,1).setWeight(5,0).setFill(GBC.BOTH);panel.add(newJComboBox(newString组合框),newGBC(2,2,2,1).setWeight(5,0).setFill(GBC.BOTH);panel.add(newJTextField(单行文本框),newGBC(0,3,4,1).setWeight(5,0).setFill(GBC.BOTH);this.setLayout(newBorderLayout();this.getContentPane().add(panel,BorderLayout.CENTER);,publicstaticvoidmain(Stringargs)/匿名内部类,为窗口注册事件newGridBagLayoutTest().addWindowListener(newWindowAdapter()publicvoidwindowClosing(WindowEvente)System.exit(0););,2.相关知识GridBagLayout类,GridBagConstraints类,fillNONE:不调整组件大小。HORIZONTAL:加宽组件,使它在水平方向上得以填满其显示区域,但是不改变高度。VERTICAL:加高组件,使它在垂直方向上得以填满其显示区域,但是不改变宽度。BOTH:使组件完全填满其显示区域anchor可能的值有两种:相对和绝对相对值的解释是相对于容器的组件方向属性PAGE_START、PAGE_END、LINE_START、LINE_END、FIRST_LINE_START、FIRST_LINE_END、LAST_LINE_START和LAST_LINE_END。绝对值则不然CENTER、NORTH、NORTHEAST、EAST、SOUTHEAST、SOUTH、SOUTHWEST、WEST和NORTHWEST默认值为CENTER,Insets对象是容器边界的表示形式它指定容器必须在其各个边缘留出的空间。这个空间可以是边界、空白空间或标题。Insets(inttop,intleft,intbottom,intright)创建并初始化具有指定顶部、左边、底部、右边inset的新Insets对象。默认值为newInsets(0,0,0,0)。,GridBagLayout不要求组件的大小相同即可将组件垂直和水平对齐每个GridBagLayout对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,称为显示区域。每个由GridBagLayout管理的组件都与GridBagConstraints的实例相关联Constraints对象指定组件在网格中的显示区域以及组件在其显示区域中的放置方式网格的总体方向取决于容器的ComponentOrientation属性对于水平的从左到右的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校防火管理制度
- AI计算器付费版功能对比
- 煤炭运输合同协议2026年时效性
- 高考培训试题答案大全及答案
- 营养师基础知识试卷及分析
- 眼科白内障试题及解析
- Web前端HTMLCSS试卷及详解
- 初中生物遗传变异题目及分析
- 波兰语真题及分析
- 执业药师西药学专业知识一试卷及答案
- 2022海康威视DS-VM11S-B系列服务器用户手册V1.1
- 期末试卷(试题)-2023-2024学年四年级下册数学北师大版.3
- 中国共产主义青年团团员教育管理工作条例(试行)团课学习课件
- (DMTO)甲醇制烯烃基础理论知识培训
- (高清版)DZT 0064.2-2021 地下水质分析方法 第2部分:水样的采集和保存
- 广西科技大学毕业答辩模板
- GB/T 29349-2023法庭科学现场照相、录像要求
- 人教版一年级数学下册《第8单元 总复习 第1节 数与代数》课堂教学课件PPT小学公开课
- 2023年驾驶员技能竞赛实际操作项目及评分标准
- 特种加工技术课件第11章 高压水射流加工
- YS/T 96-2009散装浮选铜精矿中金、银分析取制样方法
评论
0/150
提交评论