欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    java实验 JAVA Swing 图形用户界面和对话框.doc

    • 资源ID:9033189       资源大小:1.10MB        全文页数:15页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    java实验 JAVA Swing 图形用户界面和对话框.doc

    JAVA实验报告课程名称 java实验 实验名称 JAVA Swing 图形用户界面和对话框 学 院_计算机学院_ 专业班级_软件 _姓 名_ _ 学号_ _实验日期:2015年4月30 日一. 实验目的(1) 学习处理ActionEven事件;(2) 学习使用布局类;(3) 学习焦点、鼠标和键盘事件;(4) 学习使用对话框。二. 实验内容()实验题目一:算术测试 ,编写一个算术测试小软件,用来训练小学生的算术能力。1.要点分析: 程序有三个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确。ComputerFrame对象负责为算术题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面给出题目的答案;MainClass是软件的主类。2.程序源代码:package 算术测试;public class MainClass public static void main(String args)ComputerFrame frame;frame=new ComputerFrame();frame.setTitle("算术测试");frame.setBounds(100,100,650,180);package 算术测试;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ComputerFrame extends JFrame JMenuBar menubar;JMenu choiceGrade;JMenuItem grade1,grade2;JTextField textOne,textTwo,textResult;JButton getProblem,giveAnswer;JLabel operatorLabel,message;Teacher teacherZhang;ComputerFrame()teacherZhang=new Teacher();teacherZhang.setMaxInteger(20);setLayout(new FlowLayout();menubar=new JMenuBar();choiceGrade=new JMenu("选择级别"); grade1=new JMenuItem("幼儿级别"); grade2=new JMenuItem("儿童级别"); grade1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setMaxInteger(10); );grade2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setMaxInteger(50); ); choiceGrade.add(grade1); choiceGrade.add(grade2); menubar.add(choiceGrade); setJMenuBar(menubar); textOne=new JTextField(5);/创建文本框,其可见字符长为5 textTwo=new JTextField(5); textResult=new JTextField(5); operatorLabel=new JLabel("+"); operatorLabel.setFont(new Font("Arial",Font.BOLD,20); message=new JLabel("你还没有回答呢"); getProblem=new JButton("获取题目"); giveAnswer=new JButton("确认答案"); add(getProblem); add(textOne); add(operatorLabel); add(textTwo); add(new JLabel("="); add(textResult); add(giveAnswer); add(message); textResult.requestFocus(); textOne.setEditable(false); textTwo.setEditable(false); getProblem.setActionCommand("getProblem"); textResult.setActionCommand("anwser"); giveAnswer.setActionCommand("answer"); teacherZhang.setJTextField(textOne,textTwo,textResult); teacherZhang.setJLabel(operatorLabel,message); getProblem.addActionListener(teacherZhang); giveAnswer.addActionListener(teacherZhang); textResult.addActionListener(teacherZhang); setVisible(true); validate(); setDefaultCloseOperation(DISPOSE_ON_CLOSE);package 算术测试;import java.util.Random;import java.awt.event.*;import javax.swing.*;public class Teacher implements ActionListenerint numberOne,numberTwo;String operator=""boolean isRigth;Random random;int maxInteger;JTextField textOne,textTwo,textResult;JLabel operatorLabel,message;Teacher()random=new Random(); public void setMaxInteger(int n) maxInteger=n; public void actionPerformed(ActionEvent e) String str=e.getActionCommand(); if(str.equals("getProblem") numberOne=random.nextInt(maxInteger)+1;/1最大整数之间的随机数 numberTwo=random.nextInt(maxInteger)+1; double d=Math.random();/获取01之间的随机数 if(d>=0.5) operator="+" else operator="-" textOne.setText(""+numberOne); textTwo.setText(""+numberTwo); operatorLabel.setText(operator); message.setText("请回答"); textResult.setText(null); else if(str.equals("answer") String answer=textResult.getText(); try int result=Integer.parseInt(answer); if(operator.equals("+") if(result=numberOne+numberTwo) message.setText("你回答正确"); else message.setText("你回答错误"); else if(operator.equals("-") if(result=numberOne-numberTwo) message.setText("你回答正确"); else message.setText("你回答错误"); catch(NumberFormatException ex) message.setText("请输入数字字符"); public void setJTextField(JTextField. t) textOne=t0; textTwo=t1; textResult=t2; public void setJLabel(JLabel.label) operatorLabel=label0; message=label1; 3.实验结果:4.实验后练习:(1)模仿本实验的代码,再增加小学生级别。(2)给上述程序增加测试乘法的功能。(二)实验题目二: 布局与日历。1.要点分析: 设置一个窗口,该窗口的布局为BorderLayout布局。窗口的中心添加一个JPanel容器pCenter,pCenter的布局是7行7列的GridLayout布局,pCenter中放置49个标签,用来显示日历。窗口的北面添加一个JPanel容器pNorth,其布局是FlowLayout布局,pNorth放置两个按钮:nextMonth和previousMonth,单击nextMonth按钮,可以显示当前月的下一月日历;单击previousMonth按钮,可以显示当前月的上一月的日历。2.程序源代码:package 布局与日历;public class CalendarMainClass public static void main(String args) CalendarFrame frame=new CalendarFrame(); frame.setBounds(100,100,360,300); frame.setVisible(true); frame.setYearAndMonth(2015,5); package 布局与日历;import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;public class CalendarFrame extends JFrame implements ActionListener/* * */private static final long serialVersionUID = -4568452730166791416L;JLabel labelDay=new JLabel42;JButton titleName=new JButton7;String name="日","一","二","三","四","五","六"JButton nextMonth,previousMonth;CalendarBean calendar;JLabel showMessage=new JLabel("",JLabel.CENTER);int year=2011,month=2;public CalendarFrame() / TODO 自动生成的构造函数存根JPanel pCenter=new JPanel();pCenter.setLayout(new GridLayout(7,7);for(int i=0;i<7;i+)titleNamei=new JButton(namei);titleNamei.setBorder(new SoftBevelBorder(BevelBorder.RAISED);pCenter.add(titleNamei);for(int i=0;i<42;i+)labelDayi=new JLabel("",JLabel.CENTER);labelDayi.setBorder(new SoftBevelBorder(BevelBorder.LOWERED);pCenter.add(labelDayi);calendar=new CalendarBean();nextMonth=new JButton("下月");previousMonth=new JButton("上月");nextMonth.addActionListener(this);previousMonth.addActionListener(this);JPanel pNorth=new JPanel(),pSouth=new JPanel();pNorth.add(previousMonth);pNorth.add(nextMonth);pSouth.add(showMessage);add(pCenter, BorderLayout.CENTER);add(pNorth,BorderLayout.NORTH);add(pSouth,BorderLayout.SOUTH);setYearAndMonth(year,month);setDefaultCloseOperation(DISPOSE_ON_CLOSE);public void setYearAndMonth(int year2, int month2) / TODO 自动生成的方法存根calendar.setyear(year2);calendar.setMonth(month2);String day=calendar.getCalender();for(int i=0;i<42;i+)labelDayi.setText(dayi);showMessage.setText("日历"+calendar.getYear()+"年"+calendar.getMonth()+"月");Overridepublic void actionPerformed(ActionEvent e) / TODO 自动生成的方法存根if(e.getSource()=nextMonth)month=month+1;if(month>12)month=1;calendar.setMonth(month);String day=calendar.getCalender();for(int i=0;i<42;i+)labelDayi.setText(dayi);else if(e.getSource()=previousMonth)month=month-1;if(month<1)month=12;calendar.setMonth(month);String day=calendar.getCalender();for(int i=0;i<42;i+)labelDayi.setText(dayi);showMessage.setText("日历"+calendar.getYear()+"年"+calendar.getMonth()+"月");package 布局与日历;import java.util.Calendar;public class CalendarBean String day; int year=2005,month=0;public void setyear(int year) / TODO 自动生成的方法存根this.year=year;public int getYear() / TODO 自动生成的方法存根return year;public void setMonth(int month) / TODO 自动生成的方法存根this.month=month;public int getMonth() / TODO 自动生成的方法存根return month;public String getCalender() / TODO 自动生成的方法存根String a=new String42;Calendar 日历=Calendar.getInstance();日历.set(year,month-1,1);int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1;int day=0;if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)day=31;if(month=4|month=6|month=9|month=11|month=10)day=30;if(month=2)if(year%4=0)&&(year%100!=0)|year%400=0)day=29;else day=28;for(int i=星期几,n=1;i<星期几+day;i+)ai=String.valueOf(n);n+;return a;3.实验结果4.课后练习:在CalenderFrame类中增加一个JTextField文本框,用户可以通过在文本框中输入年份来修改calender对象的int成员。(三)实验题目三: 华容道1.要点分析:编写GUI程序,用户通过键盘和鼠标时间来实现曹操、关羽等人物的移动。2.程序源代码:package 华容道;public class MainClass public static void main(String args)new Hua_Rong_Dao();package 华容道;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Person extends JButton implements FocusListenerint number; Color c=new Color(255,245,170); Font font=new Font("宋体",Font.BOLD,12); Person(int number,String s) super(s); setBackground(c); setFont(font); this.number=number; c=getBackground(); addFocusListener(this); public void focusGained(FocusEvent e) / TODO Auto-generated method stubsetBackground(Color.red);public void focusLost(FocusEvent e) / TODO Auto-generated method stubsetBackground(c);package 华容道;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Hua_Rong_Dao extends JFrame implements MouseListener,KeyListener,ActionListener Person person=new Person10;JButton left,rigth,above,below;JButton restart=new JButton("重新开始");public Hua_Rong_Dao()init();setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);setBounds(100,100,320,500);setVisible(true);validate();public void init()setLayout(null);add(restart);restart.setBounds(100,320,120,35);restart.addActionListener(this);String name="曹操","关羽","张","刘","周","黄","兵","兵","兵","兵",;for(int k=0;k<name.length;k+)personk=new Person(k,namek);personk.addMouseListener(this);personk.addKeyListener(this);add(personk);person0.setBounds(104,54,100,100);person1.setBounds(104,154,100,50);person2.setBounds(54,154,50,100);person3.setBounds(204,154,50,100);person4.setBounds(54,54,50,100);person5.setBounds(204,254,50,100);person6.setBounds(54,254,50,50);person7.setBounds(204,254,50,50);person8.setBounds(104,204,50,50);person9.setBounds(154,204,50,50);person10.requestFocus();left=new JButton();rigth=new JButton();above=new JButton();below=new JButton();add(left);add(rigth);add(above);add(below);left.setBounds(49,49,5,260);rigth.setBounds(254,49,5,260);above.setBounds(49,49,210,5);below.setBounds(49,304,210,5);validate();public void keyTyped(KeyEvent e) public void keyReleased(KeyEvent e) public void keyPressed(KeyEvent e) Person man=(Person)e.getSource();if(e.getKeyCode()=KeyEvent.VK_DOWN)go(man,below);if(e.getKeyCode()=KeyEvent.VK_UP)go(man,above);if(e.getKeyCode()=KeyEvent.VK_LEFT)go(man,left);if(e.getKeyCode()=KeyEvent.VK_RIGHT)go(man,rigth);public void mousePressed(MouseEvent e) Person man=(Person)e.getSource();int x=-1,y=-1;x=e.getX();y=e.getY();int w=man.getBounds().width;int h=man.getBounds().height;if(y>h/2)go(man,below);if(y<h/2)go(man,above);if(x<w/2)go(man,left);if(x>w/2)go(man,rigth);public void mouseReleased(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseClicked(MouseEvent e) public void go(Person man,JButton direction)boolean move=true;Rectangle manRect=man.getBounds();int x=man.getBounds().x;int y=man.getBounds().y;if(direction=below)y=y+50;else if(direction=above)y=y-50;else if(direction=left)x=x-50;else if(direction=rigth)x=x+50;manRect.setLocation(x,y);Rectangle directionRect=direction.getBounds();for(int k=0;k<10;k+)Rectangle personRect=personk.getBounds();if(manRect.intersects(personRect)&&(man.number!=k)move=false;if(manRect.intersects(directionRect)move=false;if(move=true)man.setLocation(x,y);public void actionPerformed(ActionEvent e) dispose();new Hua_Rong_Dao();3.实验结果4.课后练习:一个按钮button调用setIcon(Icon icon)方法可以设置按钮button上的图标,比如可以用ImageIcon创建一个对象:ImageIcon guangyu=new ImageIcon(“ok.jpg”);然后按钮button调用setIcon(Icon icon)方法:button.setIcon(guanyu)设置按钮button上的图标是图像ok.jpg。 改进程序,使得代表华容道人物的按钮上有一个代表人物形象的图像。(四)实验题目四:计算平方根1.要点分析: 输入对话框含有供用户输入文本的文本框、一个确认和取消按钮,是有模式的对话框。当输入对话框可见时,要求用户输入一个字符串,可以用javax.swing包中的JOptionPane类的静态方法创建一个对话框。2.程序源代码:package 计算平方根;import javax.swing.*;public class InputNumber public static void main(String args)double result=0;boolean inputComputer=false;while(inputComputer=false)String str=JOptionPane.showInputDialog(null,"输入一个正数","输入对话框",JOptionPane.PLAIN_MESSAGE);tryresult=Double.parseDouble(str);if(result>=0) inputComputer=true;catch(NumberFormatException exp)JOptionPane.showMessageDialog(null,"输入了非法字符","警告对话框",JOptionPane.WARNING_MESSAGE);inputComputer=false;double sqrtRoot=Math.sqrt(result);System.out.println(result+"平方根:"+sqrtRoot); 3.实验结果:4.课后练习:编写一个应用程序,程序运行时弹出一个对话框,用户使用该对话框输入一个正数,如果用户出现输入错误(例如,输入非数字字符或负数)程序弹出一个消息对话框,警告出现了输入错误。如果输入无错误,程序显示正数的平方根。三. 个人小结此次试验,在编写一段冗长JavaSwing代码中,我学会学习处理ActionEve事件;在综合运用布局类焦点、鼠标、键盘事件和对话框编写程序的时候,我遇到了许多意想不到的问题,在处理这些的问题我深刻地体会到了作为一名程序员深思熟虑的重要性,同时在平时的学习生活中要多敲代码,这样持续地学习,久而久之熟能生巧,慢慢的许多问题你一看就轻易找到解决办法。15

    注意事项

    本文(java实验 JAVA Swing 图形用户界面和对话框.doc)为本站会员(寂****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开