java图形用户界面编程报告_java图形用户界面编程

本文档详细介绍了Java图形用户界面(GUI)编程的实验报告,包括掌握文本组件、按钮、列表和布局管理的方法。通过实现鼠标事件响应、GUI布局、按钮状态切换、扫雷游戏和文本编辑器等例子,展示了Java AWT和Swing库的应用。实验旨在提高编程能力,理解跨平台图形界面的实现,并了解AWT和Swing的组件、事件处理模型以及它们之间的差异。

一、实验目的:

(1)掌握文本组件、按钮和单、复选按钮组件的使用。

(2)掌握列表的使用,鼠标、键盘事件的处理。

(3)掌握布局控制的方法。

二、实验内容和要求:

(1)编写一个小程序响应鼠标事件,当鼠标事件发生时,在状态条显示相应的事件信息。

(2)完成如图所示的GUI布局管理,不需要实现功能。

(3)试设计一窗口,内含一个按钮。开始运行时,按钮显示“Click Me”字样,当按钮显示为“Click Me Again”字样,再按一次,则按钮显示“Click Me”字样,依次循环。

(4)仿照Windows 2000/XP系统提供扫雷游戏编写一个类似功能和界面的扫雷程序。

(5)编写一个建议文本编译器,参考书中图形界面。

要求:包含基本的打开、保存、新建等功能,包含菜单,能够对文本的字体类型和颜色进行设置,力求界面美观。

三、实验预习:

复习本章所学内容,思考一下问题:

(1)Java语言是跨平台的编程语言,那么图形界面如何做到跨平台?

(2)AWT有哪些组件和容器?他们各自的使用方法是什么?

(3)AWT的时间处理模型是什么?原理又如何?

(4)什么是Swing?它和AWT比有什么优点?使用上有什么区别?

四、实验步骤及结果:

(1)鼠标响应事件小程序源代码:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class ShiYan08_01 implements MouseMotionListener,MouseListener,WindowListener{

private Frame frm;

private TextField tf;

public static void main(String args[]){

ShiYan08_01 two = new ShiYan08_01 ();

two.go();

}

public void go(){

frm = new Frame("三个监听器");

frm.add(new Label("拖曳鼠标"),"North");

tf = new TextField(30);

frm.add(tf,"South");

frm.addMouseMotionListener(this);

frm.addMouseListener(this);

frm.addWindowListener(this);

frm.setSize(300,200);

frm.setVisible(true);

}

public void mouseDragged(MouseEvent e){

String s = "鼠标当前坐标: X="+e.getX()+"\tY = "+e.getY();

tf.setText(s);

}

public void mouseMoved(MouseEvent e){}

public void mouseClicked(MouseEvent e){}

public void mouseEntered(MouseEvent e){

String s = "鼠标进入了";

tf.setText(s);

}

public void mouseExited(MouseEvent e){

String s = "鼠标离开了";

tf.setText(s);

}

public void mousePressed(MouseEvent e){}

public void mouseReleased(MouseEvent e){}

public void windowClosing(WindowEvent e){

System.exit(1);

}

public void windowOpened(WindowEvent e){}

public void windowIconified(WindowEvent e){}

public void windowDeiconified(WindowEvent e){}

public void windowClosed(WindowEvent e){}

public void windowActivated(WindowEvent e){}

public void windowDeactivated(WindowEvent e){}

}

实验结果:

(2)GUI布局管理器实现图形源代码:

import java.awt.*;

public class Mygui {

private Frame frm;

public Mygui(){

frm=new Frame("FileChooseDemo");

}

public void launchFrame(){

Panel p1=new Panel();

Panel p2=new Panel();

frm.add(p1,BorderLayout.CENTER);

frm.add(p2,BorderLayout.SOUTH);

Panel p11=new Panel();

Panel p12=new Panel();

Panel p13=new Panel();

Panel p14=new Panel();

p1.setLayout(new GridLayout(1,4));

p1.add(p11);

p1.add(p12);

p1.add(p13);

p1.add(p14);

Checkbox chb111=new Checkbox("open");

Checkbox chb112=new Checkbox("save",true);

Checkbox chb113=new Checkbox("custom");

CheckboxGroup grp1=new CheckboxGroup();

chb111.setCheckboxGroup(grp1);

chb112.setCheckboxGroup(grp1);

chb113.setCheckboxGroup(grp1);

TextField tf=new TextField("dialog1");

p11.setLayout(new GridLayout(4,1));

p11.add(chb111);

p11.add(chb112);

p11.add(chb113);

p11.add(tf);

Label lb1=new Label("cheng jia nan");

Label lb2=new Label("song kai le");

Checkbox chb121=new Checkbox("wang qi",true);

Checkbox chb122=new Checkbox("han fei");

CheckboxGroup grp2=new CheckboxGroup();

chb121.setCheckboxGroup(grp2);

chb122.setCheckboxGroup(grp2);

p12.setLayout(new GridLayout(4,1));

p12.add(lb1);

p12.add(lb2);

p12.add(chb121);

p12.add(chb122);

Checkbox chb131=new Checkbox("chen mei jia",false);

Checkbox chb132=new Checkbox("zeng xiao xian",true);

Checkbox chb133=new Checkbox("hu yi fei",true);

Checkbox chb134=new Checkbox("lin wan yu",true);

Checkbox chb135=new Checkbox("lu zhan bo",true);

p13.setLayout(new GridLayout(5,1));

p13.add(chb131);

p13.add(chb132);

p13.add(chb133);

p13.add(chb134);

p13.add(chb135);

Checkbox chb141=new Checkbox("qiao guan xi");

Checkbox chb142=new Checkbox("wang shi pu");

Checkbox chb143=new Checkbox("li yun ");

Checkbox chb144=new Checkbox("wang kang yi",true);

Checkbox chb145=new Checkbox("jin jia wei");

CheckboxGroup grp3=new CheckboxGroup();

chb141.setCheckboxGroup(grp3);

chb142.setCheckboxGroup(grp3);

chb143.setCheckboxGroup(grp3);

chb144.setCheckboxGroup(grp3);

chb145.setCheckboxGroup(grp3);

p14.setLayout(new GridLayout(5,1));

p14.add(chb141);

p14.add(chb142);

p14.add(chb143);

p14.add(chb144);

p14.add(chb145);

p2.setLayout(new FlowLayout());

Checkbox chb21=new Checkbox("hehe");

Checkbox chb22=new Checkbox("liujing");

Checkbox chb23=new Checkbox("niuqian",true);

CheckboxGroup grp4=new CheckboxGroup();

chb111.setCheckboxGroup(grp4);

chb112.setCheckboxGroup(grp4);

chb113.setCheckboxGroup(grp4);

Label lb3=new Label("show Flie");

p2.add(chb21);

p2.add(chb22);

p2.add(chb23);

p2.add(lb3);

frm.setSize(500,200);

frm.setVisible(true);

}

public static void main(String[] args) {

Mygui obj=new Mygui();

obj.launchFrame();

}

}

实验结果:

(3)实验程序源代码:

import java.awt.*;

import java.awt.event.*;

public class ShiYan08_03 extends Frame implements ActionListener{

int i=1;

static ShiYan08_03 frm=new ShiYan08_03();

static Button btn=new Button("Click me again!");

public static void main(String args[]){

btn.setSize(30, 40);

btn.addActionListener(frm);

frm.setLayout(new FlowLayout());

frm.setTitle("事件测试窗口");

frm.setSize(300,200);

frm.add(btn);

frm.setVisible(true);

}

public void actionPerformed(ActionEvent e){

if(i%2!=0){

btn.setLabel("Click me!");

i++;

}

else {

btn.setLabel("Click me again!");

i++;

}

}

}

实验结果:

(4)仿照Windows 2000/XP系统提供扫雷游戏编写一个类似功能和界面的扫雷程序:

import java.awt.*;

import java.awt.event.*;

public class Saolei implements

ActionListener{

private Frame frm;

public Saolei(){

frm=new Frame("扫雷");

}

public void launchFrame(){

MenuBar

mb=new MenuBar();

Menu menu1=new Menu("游戏(G)");

Menu menu2=new Menu("帮助(H)");

MenuItem mi_new=new MenuItem("新游戏F2");

MenuItem mi_tg=new MenuItem("统计信息F4");

MenuItem mi_xx=new MenuItem("选项F5");

MenuItem mi_gg=new MenuItem("更改外观F7");

MenuItem mi_tc=new MenuItem("退出");

MenuItem mi_ck=new MenuItem("查看帮助");

MenuItem mi_gy=new MenuItem("关于扫雷");

Panel p1=new Panel();

p1.setLayout(new GridLayout(9,9));

for(int i=1;i<=81;i++){

Button btn=new Button();

btn.addActionListener(this);

p1.add(btn);

}

frm.setMenuBar(mb);

mb.add(menu1);

mb.add(menu2);

menu1.add(mi_new);

menu1.add(mi_tg);

menu1.add(mi_xx);

menu1.add(mi_gg);

menu1.add(mi_tc);

menu2.add(mi_ck);

menu2.add(mi_gy);

frm.add(p1);

frm.setSize(200,230);

frm.setVisible(true);

}

public void actionPerformed(ActionEvent e){

Button btn1=(Button)e.getSource();

btn1.setLabel("*");

}

public static void main(String[] args) {

Saolei obj=new Saolei();

obj.launchFrame();

}

}

运行结果:

(5)文本编译器源代码:

import java.awt.*;

import java.awt.event.*;

public class

ShiYan08_5 extends Frame{

private MyFiles m;

private MenuItem mi_Open,mi_New,mi_Save,mi_Close,mi_Cut,

mi_Copy,mi_Paste, mi_Select,mi_Recent;

public ShiYan08_5(){

super("Simple Text Editor");

MenuBar mb=new MenuBar();

Menu filemenu1=new Menu("Style");

Menu filemenu2=new Menu("Exit");

mi_Open=new MenuItem("Open");

mi_New=new MenuItem("New");

mi_Save=new MenuItem("Save");

mi_Cut=new MenuItem("Cut");

mi_Copy=new MenuItem("Copy");

mi_Paste=new MenuItem("Paste");

mi_Select=new MenuItem("Select All");

mi_Recent=new MenuItem("Recent Cut");

filemenu1.add(mi_Open);

filemenu1.add(mi_New);

filemenu1.add(mi_Save);

filemenu2.add(mi_Cut);

filemenu2.add(mi_Copy);

filemenu2.add(mi_Paste);

filemenu2.add( mi_Select);

filemenu2.add(mi_Recent);

mb.add(filemenu1);

mb.add(filemenu2);

setSize(300,200);

setMenuBar(mb);

setVisible(true);

}

public static void main(String args[]){

ShiYan08_5 dlg=new ShiYan08_5();

}

public

boolean action(Event e,Object o){

if (e.target instanceof MenuItem)

if(e.arg.equals(mi_Open.getLabel()))

m=new MyFiles(this,FileDialog.LOAD);

else if(e.arg.equals(mi_Save.getLabel()))

m=new MyFiles(this,FileDialog.SAVE);

return true;

}

public

boolean handleEvent(Event e){

if(e.id==Event.WINDOW_DESTROY){

setVisible(false);

dispose();

System.exit(0);

return true;

}

return super.handleEvent(e);

}

}

class MyFiles extends FileDialog{

public

MyFiles(Frame f,int type){

super(f,(type==FileDialog.LOAD?"Open":"Save")+"Dialog",type);

setSize(400,250);

setVisible(true);

}

}

实验结果:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值