实验五-图形用户界面_第1页
实验五-图形用户界面_第2页
实验五-图形用户界面_第3页
实验五-图形用户界面_第4页
实验五-图形用户界面_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验五图形用户界面一、实验目的了解图形用户界面的概念;掌握标签和按钮的使用;掌握文本框和文本区的使用;掌握对话框的定义与使用;掌握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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论