组件与事件处理及编程

更新时间:2023-09-11 08:10:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

甘肃政法学院

本科学生实验报告

( 三 )

姓名 刘倚帆 学院 计算机科学学院 专业 计算机科学与技术 班级 12级专升本班 实验课程名称 Java 程序设计 试验时间 2012 年 10 月 23 日 指导教师及职称 李瑞生 实验成绩 开课时间 2012—2013 学年 第一 学期

甘肃政法学院实验管理中心印制

实验题目 组件与事件处理(1) 组件与事件编程(2) 小组合作 否 姓 名 一、实验目的: 班 级 学 号 组件与事件处理(1) 掌握java 图形用户界面设计常用类及其各自重要方法的应用。 掌握java 事件处理模式并熟练掌握文本框上事件处理的方法。 组件与事件编程(2) 掌握package语句与import语句的用法。 掌握对话框的编制和事件处理方法。 掌握鼠标焦点事件、鼠标事件及键盘事件的处理方法。 二、实验要求: ? ? ? 复习理论教学中所学的内容。 认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。 认真总结实验并书写实验报告。 三、实验环境: 安装有JDK1.6,Eclipse的计算机。 四、实验内容与步骤:

组件与事件处理(1)

1、算术测试:请读懂下面模板程序,将其补充完整并调试运行。 Teacher.java

package 实验3_1_1; public class Teacher { int numberOne,numberTwo; String operator=\; boolean right;

public int giveNumberOne(int n) { numberOne=(int)(Math.random()*n)+1; return numberOne; }

public int giveNumberTwo(int n) { numberTwo=(int)(Math.random()*n)+1; return numberTwo; }

public String giveOperator() { double d=Math.random(); if(d>=0.5) operator=\; else

operator=\; return operator; }

public boolean getRight(int answer) { if(operator.equals(\))

{ if(answer==numberOne+numberTwo) right=true; else

right=false; }

else if(operator.equals(\))

{ if(answer==numberOne-numberTwo) right=true; else

right=false; }

return right; } }

ComputerFrame.java

package 实验3_1_1; import java.awt.*; import java.awt.event.*; import javax.swing.JTextField; @SuppressWarnings(\)

public class ComputerFrame extends Frame implements ActionListener { JTextField textOne; JTextField textTwo; JTextField textResult;

Button getProblem,giveAnwser; Label operatorLabel,message; Teacher teacher;

ComputerFrame(String s) { super(s);

teacher=new Teacher(); setLayout(new FlowLayout());

textOne=new JTextField(10); //创建textOne,其可见字符长是10 textTwo=new JTextField(10); //创建textTwo,其可见字符长是10 textResult=new JTextField(10); //创建textResult,其可见字符长是10 operatorLabel=new Label(\); message=new Label(\你还没有回答呢\); getProblem=new Button(\获取题目\); giveAnwser=new Button(\确认答案\); add(getProblem); add(textOne); add(operatorLabel); add(textTwo); add(new Label(\)); add(textResult); add(giveAnwser); add(message);

textResult.requestFocus(); textOne.setEditable(false); textTwo.setEditable(false);

getProblem.addActionListener(this); //将当前窗口注册为getProblem的ActionEvent事件监视器 giveAnwser.addActionListener(this); //将当前窗口注册为giveAnwser的ActionEvent事件监视器 textResult.addActionListener(this); //将当前窗口注册为textResult的ActionEvent事件监视器 setBounds(100,100,450,100); setVisible(true); validate();

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

{ System.exit(0); } } ); }

public void actionPerformed(ActionEvent e)

{ if(e.getSource() == getProblem) //判断事件源是否是getProblem { int number1=teacher.giveNumberOne(100); int number2=teacher.giveNumberTwo(100); String operator=teacher.giveOperator(); textOne.setText(\+number1); textTwo.setText(\+number2); operatorLabel.setText(operator); message.setText(\请回答\); textResult.setText(null); }

if(e.getSource() == giveAnwser) //判断事件源是否是giveAnwser { String answer=textResult.getText(); try{

int result=Integer.parseInt(answer); if(teacher.getRight(result)==true) { message.setText(\你回答正确\); } else

{ message.setText(\你回答错误\); } }

catch(NumberFormatException ex)

{ message.setText(\请输入数字字符\); } }

textResult.requestFocus(); validate(); } }

MainClass.java

package 实验3_1_1; public class MainClass { @SuppressWarnings(\)

public static void main(String args[]) { ComputerFrame frame;

frame=new ComputerFrame(\算术测试\);//创建窗口,其标题为:算术测试 }

equation.setB(b); equation.setC(c); textA.setText(\+a); textB.setText(\+b); textC.setText(\+c);

showRoots.append(\根:\+equation.getRootOne()); showRoots.append(\根:\+equation.getRootTwo()); }

catch(Exception ex)

{ showRoots.append(\+ex+\); } } }

EquationMainClass.java

package 实验3_2;

public class EquationMainClass { @SuppressWarnings(\)

public static void main(String args[])

{ EquationFrame frame=new EquationFrame(); } }

运行结果:

2、字体对话框:请读懂下面模板代码,将其补充完整并调试运行。 FontFamilyNames.java

package 实验3_2_2;

import java.awt.GraphicsEnvironment; public class FontFamilyNames { String fontName[];

public String [] getFontName()

{ GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); fontName=ge.getAvailableFontFamilyNames(); return fontName; } }

FontDialog.java

package 实验3_2_2;

import java.awt.event.*; import java.awt.*;

import javax.swing.JLabel;

public class FontDialog extends Dialog implements ItemListener,ActionListener { FontFamilyNames fontFamilyNames; int fontSize=38; String fontName; Choice fontNameList; JLabel label; Font font;

Button yes,cancel; static int YES=1,NO=0;

int state=-1; FontDialog(Frame f) { super(f);

fontFamilyNames=new FontFamilyNames();

setModal(true); //对话框设置为有模式 yes=new Button(\); cancel=new Button(\); yes.addActionListener(this); cancel.addActionListener(this);

label=new JLabel(\奥运\,JLabel.CENTER); fontNameList=new Choice();

String name[]=fontFamilyNames.getFontName(); for(int k=0;k

fontNameList.addItemListener(this); add(fontNameList,BorderLayout.NORTH); add(label,BorderLayout.CENTER); Panel pSouth=new Panel(); pSouth.add(yes); pSouth.add(cancel);

add(pSouth,BorderLayout.SOUTH); setBounds(100,100,280,170);

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e) { state=NO;

setVisible(false); } } ); validate(); }

public void itemStateChanged(ItemEvent e)

{ fontName=(String)fontNameList.getSelectedItem(); font=new Font(fontName,Font.BOLD,fontSize); label.setFont(font); label.repaint(); validate(); }

public void actionPerformed(ActionEvent e) { if(e.getSource()==yes) { state=YES;

setVisible(false); //对话框设置为不可见 }

else if(e.getSource()==cancel) { state=NO;

setVisible(false); //对话框设置为不可见 } }

public int getState() { return state; }

public Font getFont() { return font; } }

FrameHaveDialog.java

package 实验3_2_2; import java.awt.event.*; import java.awt.*;

import javax.swing.JTextArea;

public class FrameHaveDialog extends Frame implements ActionListener { JTextArea text; Button buttonFont; FrameHaveDialog()

{ buttonFont=new Button(\设置字体\);

text=new JTextArea(\实用教程(第三版)\); buttonFont.addActionListener(this); add(buttonFont,BorderLayout.NORTH); add(text);

setBounds(60,60,300,300); setVisible(true); validate();

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e) { System.exit(0); } } ); }

public void actionPerformed(ActionEvent e) { if(e.getSource()==buttonFont)

{ FontDialog dialog=new FontDialog(this); //创建对话框 setVisible(true); //对话框设置为可见

dialog.setTitle(\字体对话框\); //对话框设置设置标题为“字体对话框” if(dialog.getState()==FontDialog.YES) { text.setFont(dialog.getFont());

text.repaint(); }

if(dialog.getState()==FontDialog.NO) { text.repaint(); } } } }

FontDialogMainClass.java

package 实验3_2_2;

public class FontDialogMainClass

{ public static void main(String args[]) { new FrameHaveDialog(); } }

运行结果:

3、英语单词拼写练习:请读懂下面模板代码,将其补充完整并调试运行。 RondomString.java

package 实验3_2_3;

public class RondomString { String str=\;

public String getRondomString(String s) { StringBuffer strBuffer=new StringBuffer(s); int m=strBuffer.length(); for(int k=0;k

本文来源:https://www.bwwdw.com/article/si4h.html

Top