《Java》实验指导13&阶段测验(学生版)

时间:2024.3.19

(/文理学院)

《面向对象程序设计》实验指导书

(2014.3-2014.6)

 2013 / 20## 学年  第  2 学期

              实验课程:《面向对象程序设计》

              系   别:教育信息与技术学院/信息工程系

          专    业:信息工程

          班    级:1102/1103/1106班

              姓    名:__________

              学    号:____________

              指导教师:许 新 华

教育信息与技术学院

2014.9

实验项目十三  GUI设计进阶

一、实验目的及要求

1、掌握事件处理机制

2、掌握常用组件的使用

3、掌握菜单和对话框组件的使用

4、掌握选项卡组件的使用

二、实验内容和要求

1、掌握事件处理机制

//p197,例11-9,事件授权模型

import _____________.*;

import _____________.*;

import _____________.*;

//该程序为小程序,主窗口为JApplet

public class MouseKeyEventDemo extends JApplet{      

private int lastX=0,lastY=0;             //变量用于记录上一次的坐标位置

// init()为初始化方法,是小程序必须有的方法

public void init(){

       addM______L________(new RecordFocus());     //添加获取鼠标位置的监听器

       a___MouseM________Listener(new DrawLine());  //添加拖动鼠标画线的监听器

       ___dKeyListener(new DrawChar());          //添加敲击键盘显示字符的监听器

        }

//此方法记录焦点的坐标位置

        protected void record(int x,int y){                             

         lastX=__;

         lastY=__;

}

// 鼠标事件处理类

private class RecordFocus __________ MouseAdapter{

                          //捕获鼠标进入事件

       public void mouseEntered(MouseEvent e){

                   record(__.getX(),__.getY());          //记录焦点的坐标位置

           }

                      //捕获鼠标按下事件

                public void mousePressed(MouseE______ e){

                   record(e.___X(),e.____Y());         //记录焦点的坐标位置

           }

        }

        private class DrawLine extends MouseMotion_______{

                      //捕获鼠标拖拽事件

       public void mouseDragged(MouseEvent e){

                   Graphics g=getGraphics();     //得到绘制图形对象g

                   g.setColor(Color.red);        //设置绘制颜色为红色

                   int x=__.____();               //获取当前鼠标位置横坐标

                   int y=__.____();               //获取当前鼠标位置纵坐标

                   g.drawLine(lastX,lastY,x,y);  //在鼠标前后两个位置间画线

                   record(x,y);                  //记录当前鼠标位置

           }

         }

//键盘事件处理类

         private class DrawChar __________ KeyAdapter{

                      //捕获键盘按下事件

       public void keyTyped(KeyEvent e){

                   Graphics g=getGraphics();        //得到绘制图形对象g

                   __.setColor(Color.blue);          //设置绘制颜色为蓝色

                   String s=String.valueOf(__.getKeyChar());   //获取按键的字符

                   g.drawString(__,lastX,lastY);      //在当前焦点位置画出字符

                   record(lastX+8,lastY);              //记录新的焦点位置

           }

   }

}

l   运行结果

l   算法分析

2、常用组件的使用

//操作2,P203,例11-10,常用组件

import java.awt.__;

import javax.swing.___;

import java.awt.event.__;

import java.sql.*;

publicclass StudentFrame _______JFrame ________ ActionListener{

JLabel lblno=new _______("学号:");//学号组合框

String no[]={"20053051101","20053051102"};

JComboBox jcbno=new _______(no);

JLabel lblname=new JLabel("姓名:");//文本框

_________ txtname=new JTextField(10);

_________ lblage=new JLabel("年龄:");//下拉列表框

String age[]={"20","21","22","23","24","25","26","27","28"};

_________ jcbage=new JComboBox(age);

_________ lblsex=new JLabel("性别:");//单选按钮

__________ bgr=new ButtonGroup();

JRadioButton ckbmale=_____ JRadioButton("男",true);

JRadioButton ckbfamale=______ JRadioButton("女");

JLabel lblhobby=new JLabel("爱好:");//复选按钮

_________ rdo1=new JCheckBox("唱歌");

_________ rdo2=new JCheckBox("跳舞");

JCheckBox rdo3=new JCheckBox("篮球");

JCheckBox rdo4=new JCheckBox("读书");

JLabel lbladdr=new JLabel("地址:");//多行文本框

________ txaadd=new JTextArea(2,10);

JLabel lbledu=new JLabel("专业:");//专业列表框

String edu[]={"经济管理","计算机","信息工程"};

JList lstedu=new _______(edu);

JButton btnadd=new ________("添加");

JButton btnexit=new ________("退出");

JPanel p1=new ______(new FlowLayout(FlowLayout.LEFT));

______ p2=new JPanel(new FlowLayout(FlowLayout.LEFT));

JPanel p3=new JPanel(new FlowLayout(FlowLayout.LEFT));

______ p4=new JPanel(new FlowLayout(FlowLayout.LEFT));

JPanel p5=new JPanel(new FlowLayout(FlowLayout.CENTER));

StudentFrame(){

super("学生信息录入");

Container contentpane=____ContentPane();

contentpane.set_______(new GridLayout(5,1));

p1.___(lblno);

jcbno.setEditable(true);//设置JCheckBox可以编辑

p1.____(jcbno);

p1.add(lblname);

p1.add(txtname);

contentpane.add(p1);

p2.add(lblage);

p2.____(jcbage);

p2.____(lblsex);

p2.add(ckbmale);

p2.add(ckbfamale);

bgr.add(_______);

bgr.add(________);

contentpane.add(p2);

p3.add(______);

p3.add(______);

p3.add(_______);

p3.add(_______);

p3.add(_______);

contentpane.add(p3);

p__.add(lbladdr);

p__.add(txaadd);

p__.add(lbledu);

p4.add(lstedu);

contentpane.add(___);

btnadd.addActionListener(this);

btnexit.addActionListener(this);

p5.add(btnadd);

p5.add(btnexit);

contentpane.add(p5);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(380,260);

setVisible(true);

}

publicvoid actionPerformed(ActionEvent e){

    String command=e.getActionCommand();

    if(command.equals("添加")){

                         //完成数据库添加数据操作

       }

    if(command.equals("退出")){

       System.exit(0);

       }

    }

publicstaticvoid main(String args[]){

    StudentFrame s=new StudentFrame();

    }

}

l   运行结果

l   算法分析

3、菜单和对话框组件的使用

//P208,例11-12,菜单与对话框的使用

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

publicclass NoteSystem extends _______ implements Action_______ {

    JTextField textField;

    _______ mb = new JMenuBar(); // 创建菜单条

    // 创建下拉菜单

    _______ m1 = new JMenu("文件"); // 创建菜单

    _______ m2 = new JMenu("编辑");

    _______ m3 = new JMenu("帮助");

    JMenuItem mi1 = new ______("打开");// 创建菜单项

    JMenuItem mi2 = new ______("保存");

    JMenuItem mi3 = new _______("退出");

    // 创建弹出式菜单

    JPopupMenu popup = new JPopupMenu();

    JMenuItem pmi1 = new JMenuItem("剪切");

    JMenuItem pmi2 = new JMenuItem("复制");

    JMenuItem pmi3 = new JMenuItem("粘贴");

    public NoteSystem(){

        super("记事本");

        setJMenu____(mb);

        ____.add(m1);

        ____.add(m2);

        mb.add(___);

        mi1.addActionL_____(this);//对菜单注册监听器

        mi2.addA_____Listener(this);

        mi3.a__ActionListener(this);

        m1.add(_____);

        m1.add(_____);

        m1.addSeparator();                             //添加分隔线

        m1.add(mi3);

        m2.add(new JCheckBoxMenuItem("撤销"));      //创建复选菜单项

        m3.add("帮助主题");

        m3.add("搜索");

        m3.addSeparator();

        m3.add("关于...");

        popup.add(pmi1);

        popup.add(pmi2);

        popup.add(pmi3);

        //实现弹出式菜单

        getContentPane().addMouseListener(new MouseAdapter(){  

//内嵌式类实现事件监听

            publicvoid mouseReleased(MouseEvent e){

                if(e.isPopupTrigger()){

                     popup.show(e.getComponent(),e.getX(),e.getY());    //显示弹出式菜单}

            }

        }});

         textField=new JTextField();//创建和添加文本框

         getContentPane().add(textField,BorderLayout.SOUTH);

    }

    publicvoid actionPerformed(ActionEvent e) {

       JMenuItem select = (JMenuItem) e.getSource();

       textField.setText("你选择的是:" + select.getText());

// 得到点击菜单项上的文本并显示

       JFileChooser fileChooser = new JFileChooser();

// 创建文件对话框对象

       if (select.equals(mi1)) { // 显示文件打开对话框

           if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {

              JOptionPane.showConfirmDialog(this, "要打开"

                     + fileChooser.getSelectedFile() + "文件吗?", "文件信息",

                     JOptionPane.YES_NO_OPTION,

                     JOptionPane.INFORMATION_MESSAGE);

           }

       }

       if (select.equals(mi2)) { // 显示文件保存对话框

           if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {

              JOptionPane.showConfirmDialog(this, "要保存"

                     + fileChooser.getSelectedFile() + "文件吗?", "文件信息",

                     JOptionPane.YES_NO_OPTION,

                     JOptionPane.INFORMATION_MESSAGE);

           }

       }

       if (select.equals(mi3)) {

           JOptionPane.showConfirmDialog(this, "真的退出吗?", "确认提示",

                  JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

       }

    }

    publicstaticvoid main(________________) {

       JFrame frame = new NoteSystem();

       _______.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       frame.set_____(600, 500);

       frame.setV______(true);

    }

}

l   运行结果

l   算法分析

4、了解选项卡组件

//P211,例11-14,选项卡(JTabbedPane)组件

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

class JTabbed extends JFrame{

    JTabbedPane help=new JTabbedPane();//创建一个空白的JTabbedPane

    JPanel p1=new JPanel();

    JPanel p2=new JPanel();

    JPanel p3=new JPanel();

    JLabel l1=new JLabel("我们是一个强大的团队!");

    JLabel l2=new JLabel("本系统功能齐全。");

    JLabel l3=new JLabel("与微软的选项卡风格不同。");

    JTabbed(){

        super("帮助主题");

        p1.add(l1);

        p2.add(l2);

        p3.add(l3);

        help.add(p1,"关于我们");//在第一个书签中添加一个面板

        help.add(p2,"关于系统");//在第二个书签中添加一个面板

        help.add(p3,"比较微软");//在第三个书签中添加一个面板

        Container contentpane=getContentPane();

        contentpane.add(help,BorderLayout.CENTER);

//将JTabbedPane添加到窗体中

        setSize(400,200);

        setVisible(true);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    publicstaticvoid main(String args[]){

        _________ h=new JTabbed();

    }

}

l   运行结果

l   算法分析

三、实验小结

四、教师评语及成绩

 


随堂测验  基础知识部分

一、目的及要求

1、测验基础知识(选择题)

2、测验基础知识(填空题)

3、原题不能省略

        必须录入题干,在此基础上答题

4、题交试卷文件名规则

班级号_学号后2位_姓名,如1102_28_彭兴卫.doc,

1103_16_田翠玲.doc,

1106_37_石博文.doc。

二、任务分配1

任务分配2

更多相关推荐:
C语言实验指导及报告模板

语言程序江西理工大学设计1C附件1实验报告模板C语言程序设计实验报告实验一简单的C程序教学班级冶金136学号01姓名张博课程教师胡春安实验教师胡春安完成时间20xx20xx学年第1学期江西理工大学2实验一简单的...

行政案例方法与实例实验指导书

前言行政案例分析课程的首要特点是强调理论联系实际的学习方法要求学生运用已学的行政学基本理论对当前行政管理领域的重特大事件公共政策规范等进行分析剖析该事件或该公共政策的问题成因探讨解决该问题的可能途径丰富对该类社...

VC++实验指导书

VC程序设计实验指导书张位勇湖南工学院前言VisualC实验环境介绍一VisualC简介VisualC是Microsoft公司的VisualStudio开发工具箱中的一个C程序开发包VisualStudio提供...

Web技术实验指导书

Web技术实验指导书内容简介Web技术是计算机专业学生的一门专业课程着重讲述Web编程的技术方法对于学生从事Web系统的研发使用和维护有重要意义本课程概念多内容涉及面广系统性强通过本课程的学习学生应能从软件硬件...

C_sharp实验指导书

实验指导实验一VS20xx集成开发环境一实验目的熟悉VS20xx开发环境掌握如何在此环境下开发简单的NET应用程序以及调试程序的基本操作技巧二实验要求123熟悉VSNET环境按照C规范正确写源程序能得到正确的程...

设计性实验论文范例与书指导

设计性实验论文范例与书指导,内容附图。

设计性实验论文范例与书指导

设计性实验论文范例与书指导,内容附图。

数据结构实验指导书

数据结构实验教学大纲课程编号020xx3040课程学时学分603实验总学时10课程英文名称DataStructure课程类别技术基础课开出学期第四学期第六学期开出单位实验室信息学院教学机房制定人张丽霞讲师一制定...

数据库原理本科实验指导综合

数据库原理实验指导书数据库原理实验指导书实验一建立数据库一实验目的1了解SQLServer20xx2掌握SQLServer20xx数据库的建立和删除二实验内容1查看SQLServer20xx的所有组件2使用服务...

序号8-0914070030-12-20xx-20xx-01程序设计语言Ⅱ实验指导书

辽东学院自编教材程序设计语言实验指导书齐文编计算机科学与技术专业用辽东学院20xx年12月I目录C概论和输入输出1类和对象6派生类与继承12多态性16IO流与异常处理19面向对象程序设计方法与实例23I实验一实...

实验指导书《大型数据库(Oracle)》

大型数据库Oracle实验指导实验一Oracle安装与维护一实验目的1了解并掌握Oracle10的安装方法2了解并掌握测试安装好的Oracle10g的方法二实验内容及步骤1软件下载Oracle公司针对个人学习之...

数据结构实验指导书(广工)

数据结构作业和实验指导书数据结构课程组广东工业大学计算机学院20xx年3月目录第1章概述11课程教材和实验12作业和实验安排第2章算法设计实验和上机21数据结构习题概述22算法设计的上机作业要求23算法设计上机...

实验指导语(22篇)