实验八 Java Swing编程(I).doc
实验八 Java 图形用户界面设计(I)§8.1实验目的、内容及性质掌握 Java 的 GUI 设计技术,掌握 AWT 和 Swing 的应用技巧。实验性质:验证、必做实验学时:2学时§8.2问题及思考1、 最常见的AWT以及Swing控件用法。2、 几个常见布局总结3、 区分容器控件和一般非容器控件§8.3实验指导1、 Swing示例/*需要哪些组件,如何布局?*/ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MyFrm extends JFrame/从JFrame继承 /*声明界面需要使用的控件*/ JLabel lbl_name =new JLabel("用户名"); JLabel lbl_pwd =new JLabel("密码"); JTextField txt_name=new JTextField(); JPasswordField txt_pwd=new JPasswordField(); JButton btn_OK=new JButton("登陆"); JButton btn_Cancel=new JButton("取消"); /*在构造函数中将控件放置在JFrame上*/ public MyFrm() /*获取当前Frame的内容面板*/ JPanel jp=(JPanel)this.getContentPane(); /*设置内容面板的布局 Layout*/ jp.setLayout(new GridLayout(3,2); jp.add(lbl_name);jp.add(txt_name); jp.add(lbl_pwd);jp.add(txt_pwd); jp.add(btn_OK);jp.add(btn_Cancel); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public static void main(String arg) /*纯Java样式显示窗体*/ JFrame.setDefaultLookAndFeelDecorated(true); /*实例化当前窗体类*/ MyFrm frm=new MyFrm(); frm.setSize(200,200); frm.setVisible(true); 2、常用布局1)、流布局:FlowLayout 从左到右,自上而下方式在容器中排列,控件的大小不会随容器大小变化. 容器.setLayout(new FlowLayout(FlowLayout.LEFT);2)、网格布局:GridLayout 按照指定行数与列数,将容器分成大小相等的单元格每个单元格放置一个控件. 不能将控件放在指定单元格 容器.setLayout(new GridLayout(3,4,10,15);3)、边界布局:BorderLayout 将容器分成东、西、南、北、中五个部分 容器.setLayout(new BorderLayout();窗口的内容面板默认布局就是边界布局。容器.add(控件,BorderLayout.NORTH); 4)、混合布局:使用JPanel,将多个布局组合在一起使用 JPanel jp=(JPanel)this.getContentPane();for(int i=0;i<btn.length;i+)btni=new JButton("btn"+i);JPanel jp1=new JPanel();/默认布局为FlowLayoutjp1.setLayout(new GridLayout(2,2);for(int i=0;i<4;i+) jp1.add(btni);JPanel jp2=new JPanel();/默认布局为FlowLayout for(int i=0;i<4;i+) jp2.add(btni+4);5)、绝对布局 null:以坐标定位 容器.setLayout(null); 每个控件在放置在容器之前,必须设置其边界 setBounds(x,y,width,height);btn.setBounds(10,100,30,60);3、Swing示例Grid布局import java.awt.*;import java.awt.event.*;import javax.swing.*;public class GridLayoutDemo extends JFrame private JButton buttons; private String names = "one", "two", "three", "four", "five", "six" ; public GridLayoutDemo() super( "GridLayout Demo" ); JPanel container =(JPanel)this.getContentPane(); container.setLayout(new GridLayout( 3, 2 ); / create and add buttons buttons = new JButton names.length ; for ( int count = 0; count < names.length; count+ ) buttons count = new JButton( names count ); container.add( buttons count ); this.setSize( 300, 150 ); this.setVisible( true ); public static void main( String args ) GridLayoutDemo application = new GridLayoutDemo(); / end class GridLayoutDemo注意:在做下列题目前仔细阅读第一个示例,弄懂Swing界面设计§8.4实践编程1、调试运行示例一。弄清楚Swing设计的基本流程。2、编写如下界面。3、利用合适的布局和Swing控件完成下题按照界面使用相应控件与合适的布局完成下题,要求按生成随机数按纽产生三个随机整数0到100之间,按计算平均数按纽计算平均值,如图所示,初始界面4编写程序实现如下界面,实现事件如果按下座位i 就在控制台中显示“座位i被选中” 例如按下 “座位0“,则输出座位0被选中”5、(多态实验)编写一个完整的Java Application 程序。包含接口Shape,MyRectangle类,MyTriangle类及Test类,具体要求如下:、接口Shape:double area():求一个形状的面积 double perimeter ():求一个形状的周长、类 Rectangle:实现Shape接口,并有以下属性和方法: 属性width: double类型,表示矩形的长height: double类型,表示矩形的高 方法Rectangle(double w, double h):构造函数 toString()方法 :输出矩形的描述信息,如“width=1.0,height=2.0, perimeter=6.0, area=2.0”、类Triangle:实现Shape接口,并有以下属性和方法: 属性x,y,z: double型,表示三角形的三条边s: 周长的1/2(注:求三角形面积公式为,s=(x+y+z)/2 ,开方可用Math.sqrt(double)方法) 方法Triangle(double x, double y, double z):构造函数,给三条边和s赋初值。toString():输出矩形的描述信息,如“three sides:3.0,4.0,5.0,perimeter=12.0,area=6.0”、Test类作为主类要完成测试功能 生成Rectangle对象 调用对象的toString方法,输出对象的描述信息