版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验五图形用户界面一、实验目的了解图形用户界面的概念;掌握标签和按钮的使用;掌握文本框和文本区的使用;掌握对话框的定义与使用;掌握Java的事件处理机制;二、实验要求掌握在容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。理解Java的事件处理机制,掌握为不同组件编写事件处理程序的方法。熟练使用常用组件编写独立运行的窗口界面。熟练使用图形类Graphics。三、实验内容(一)建立独立运行的窗口界面并使用匿名类最常使用的包含组件的容器是窗口,在Java中窗口由Frame类生成。编写SY4_1.java程序文件,程序功能:创建一个具有关闭功能的空白窗口。源代码如下:importjava.awt.*;importjava.awt.event.*;publicclassSY4_1{ SY4_1(){ Framef=newFrame("初始窗口"); f.setSize(350,200); f.setVisible(true); //为窗口添加窗口事件适配器 f.addWindowListener(newWindowAdapter(){ //关闭窗口事件的方法 publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); } publicstaticvoidmain(String[]args){ newSY4_1(); System.out.println(args[0]+""+args[1]); }}编译并运行程序(二)创建图形用户界面图形用户界面(GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。组件(Component)是构成GUI的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Panel(面板)、Frame(窗口)等。通过容器的add方法把组件加入到容器中。编写SY4_2.java程序文件,程序功能:在窗口中添加组件。源代码如下:importjava.awt.*;importjava.awt.event.*;publicclassSY4_2extendsFrameimplementsActionListener{ Buttonbtn1,btn2; TextFieldf,tf1,tf2; TextAreaArea; SY4_2(){ super("添加组件的窗口"); addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); setSize(350,250);//设置窗口大小 setLocation(200,200);//设置窗口显示位置 setFont(newFont("Arial",Font.PLAIN,12));//设置字体 setLayout(newFlowLayout()); Area=newTextArea(6,40); tf1=newTextField(10);tf2=newTextField(10); btn1=newButton("显示");btn2=newButton("退出"); f=newTextField(20); add(Area);add(newLabel("用户名")); add(tf1);add(newLabel("电话")); add(tf2);add(f);add(btn1);add(btn2); tf1.addActionListener(this);tf2.addActionListener(this); btn1.addActionListener(this);btn2.addActionListener(this); show(); } publicstaticvoidmain(Stringargs[]){ newSY4_2(); } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==btn1) f.setText("你按下了"+e.getActionCommand()+"按钮"); if(e.getSource()==tf1) Area.append("用户名:"+tf1.getText()+"\n"); if(e.getSource()==tf2) Area.append("电话:"+tf2.getText()+"\n"); publicSY4_5(){ for(inti=0;i<jbArray.length;i++){ jbArray[i]=newJButton("按纽"+(i+1)); jp.add(jbArray[i]); jbArray[i].addActionListener(this); } this.add(jp); this.setTitle("网格布局"); this.setBounds(100,100,450,200); this.setVisible(true); } publicvoidactionPerformed(ActionEvente){ jp.setLayout(newGridLayout(3,2)); this.setTitle("现在为网格布局[3,2]"); jp.revalidate(); } publicstaticvoidmain(String[]args){ newSY4_5(); }}编译并运行程序(六)使用自定义对话框与内部类对话框是GUI中很常见的窗口对象,有着广泛的应用。对话框和普通窗口最大的不同就是对话框是依附在某个窗口上,一旦它所依附的窗口关闭了,对话框也要随着关闭。Java提供了Dialog类用于制作自定义对话框,当需要改变一些数据或需要一个提示窗口时可使用自定义对话框。程序功能:创建一个带有文本区及“对话框”按钮的父窗口,单击“对话框”按钮可打开一个自定义对话框,从中可以定义行和列的数值,关闭对话框其设置的设置会显示在父窗口的文本区中。编写SY4_6.java程序文件,源代码如下:importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassSY4_6extendsJFrameimplementsActionListener{ introw=10,col=40; JPanelp1=newJPanel(),p2=newJPanel(); JTextAreata=newJTextArea("文本区行数:"+row+"列数:"+col,row,col); JScrollPanescrollPane=newJScrollPane(ta); Buttonexit=newButton("关闭"); Buttondialog=newButton("对话框"); JPanelpanel=newJPanel(); SY4_6(){ setContentPane(panel); setTitle("带有对话框的父窗口"); panel.setPreferredSize(newDimension(500,200)); panel.setLayout(newBorderLayout()); panel.add("Center",p1);panel.add("South",p2); p1.add(scrollPane); p2.add(exit);p2.add(dialog); exit.addActionListener(this); dialog.addActionListener(this); pack(); show(); //setVisible(true); } publicstaticvoidmain(Stringargs[]){ newSY4_6(); } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==exit) System.exit(0); else{ MyDialogdlg=newMyDialog(this,true); dlg.show(); } } classMyDialogextendsDialogimplementsActionListener{ Labellabel1=newLabel("请输入行数"); Labellabel2=newLabel("请输入列数"); TextFieldrows=newTextField(50); TextFieldcolumns=newTextField(50); ButtonOK=newButton("确定"); ButtonCancel=newButton("取消"); MyDialog(SY4_6parent,booleanmodal){ super(parent,modal); setTitle("自定义对话框"); setSize(260,140); setResizable(false); setLayout(null); add(label1); add(label2); label1.setBounds(50,30,65,20); label2.setBounds(50,60,65,20); add(rows); add(columns); rows.setText(Integer.toString(ta.getRows())); columns.setText(Integer.toString(ta.getColumns())); rows.setBounds(120,30,90,20); columns.setBounds(120,60,90,20); add(OK); add(Cancel); OK.setBounds(60,100,60,25); Cancel.setBounds(140,100,60,25); OK.addActionListener(this); Cancel.addActionListener(this); } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==OK){ introw=Integer.parseInt(rows.getText()); intcol=Integer.parseInt(columns.getText()); ta.setRows(row); ta.setColumns(col); ta.setText("文本区行数:"+row+"列数:"+col); show(); } dispose(); } }}编译并运行程序四、实验练习题1、编写一个HelloWorld的GUI版本,可以使用AWT或者Swing。有对话框能够让用户输入自己的名字,然后在窗口上绘制“Hello,$|输入的名字|”。(必做)importjava.awt.event.*;importjavax.swing.*;publicclassTest4_1extendsJFrameimplementsActionListener{ Stringstr; JLabell1=newJLabel("请输入您的名字:"); JButtonb1=newJButton("确定"); Test4_1(){ this.setLayout(null); l1.setBounds(60,40,180,30); add(l1); b1.setBounds(100,80,80,30); add(b1); this.setVisible(true); this.setSize(300,200); this.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } }); b1.addActionListener(this); } publicvoidactionPerformed(ActionEvente){ Stringmsg=JOptionPane.showInputDialog(this,"请输入信息:","我的输入对话框",JOptionPane.PLAIN_MESSAGE); l1.setText("Hello:"+msg); } publicstaticvoidmain(String[]args){ new Test4_1(); }}2、编写程序包含一个标签、一个文本框和一个按钮,当用户单击按钮时,程序把文本框中的内容复制到标签中。(必做)packagesy4;importjava.awt.*;importjava.awt.event.*;publicclassTest4_2extendsFrameimplementsActionListener{ TextFieldtf=newTextField(15); Labell1=newLabel("请输入您的名字:"); Labell2=newLabel(); But
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国国际货运航空股份有限公司西南大区2026届高校毕业生招聘备考题库及完整答案详解一套
- 养老院入住老人健康知识普及制度
- 2026年陆军军医大学江津校区招聘备考题库及一套完整答案详解
- 2026年招聘广州南沙人力资源发展有限公司招聘编外工作人员备考题库政府编外完整参考答案详解
- 2026年萍乡市某科技公司委托萍乡市伯乐人力资源有限公司面向社会公开招聘工作人员备考题库及一套完整答案详解
- 会议安全管理与应急预案制度
- 2026年泸州市部分企事业单位人才引进88人备考题库及1套完整答案详解
- 2026年西安交通大学附属小学招聘备考题库及完整答案详解1套
- 上海市大同初级中学2026年公开招聘教师8人备考题库及完整答案详解1套
- 2026年沈阳宝钢东北贸易有限公司招聘备考题库及1套参考答案详解
- 黑龙江省大庆中学2025-2026学年高一(上)期末物理试卷(含答案)
- 高中生寒假安全教育主题班会
- 2025年银行县支行支部书记抓党建述职报告
- 畜牧技术员安全培训效果测试考核试卷含答案
- 2026届天津一中高三语文第一学期期末质量检测模拟试题含解析
- 2025-2026学年第一学期初中物理教研组工作总结报告
- 2026年小学一二年级第一学期无纸笔化考核方案及测试题(一二年级语文数学)
- 2025年时事政治试题库完整参考详解(完整版)及答案
- 生猪屠宰合同范本
- 2023年河南省直机关遴选公务员笔试真题汇编附答案解析(夺冠)
- 企业数字化管理制度制度(3篇)
评论
0/150
提交评论