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

(/文理学院)

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

(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

相关推荐