实验八 图形用户界面与对话框
实验八 图形用户界面与对话框
1. 实验目的
1、学会处理ActionEvent事件
2、学会使用布局类
3、学习焦点、鼠标和键盘事件
4、学习使用输入和消息对话框
2. 实验内容
1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行得出结果。
1) 实验1算术测试
2) 实验2布局与日历
3) 实验3华容道
4) 实验4字体对话框
5) 实验5计算平方根
6) 实验6简易计算器
2、设计编写程序完成以下任务。
1)修改实验1的代码,再增加“小学生”级别,并增加测试乘、除法的功能。
2)编写一个应用程序,用户可以在一个文本框里输入数字字符,按Enter键后将数字放入一个文本区。当输入的数字大于1000时,弹出一个有模式的对话框,提示用户数字已经大于1000,是否继续将该数字放入文本区。
3)编写应用程序,有一个标题为“移动”的窗口,窗口布局为null,在窗口中有两个按钮,单击一个按钮让另一个按钮移动。
4)仿照操作系统中的简易计算机,自行设计一个能进行加减乘除运算的计算器。需要考虑先进性乘除运算再进行加减运算。
3. 实验步骤
略
4. 评分标准
1. A——内容功能完善,编程风格好,人机接口界面好;
2. B——内容功能完善,编程风格良好,人机接口界面良好;
3. C——完成必做内容;
4. D——能完成必做内容;
5. E——未按时完成必做内容,或者抄袭(雷同者全部为E).
参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。(压缩包的文件名为:学号后三位和名字开头字母,如109zhh.RAR|ZIP)
附录:
实验1 算术测试
模板代码
Teacher.java
import java.util.Random;
import java.awt.event.*;
import javax.swing.*;
public class Teacher implements ActionListener{
int numberOne,numberTwo; String operator=" "; boolean isRight; Random random; int maxInteger; JTextField textOne,textTwo,textResult; JLabel operatorLabel,message; Teacher(){ } public void setMaxInteger(int n){ } public void actionPerformed(ActionEvent e){ String str=e.getActionCommand(); if(str.equals("getProblem")){ numberOne=random.nextInt(maxInteger)+1; numberTwo=random.nextInt(maxInteger)+1; double d=Math.random(); if(d>=0.5){ } textOne.setText(""+numberOne); textTwo.setText(""+numberTwo); operatorLabel.setText(operator); message.setText("请回答"); textResult.setText(null); operator="+"; operator="-"; }else{ maxInteger=n; random=new Random(); }else if(str.equals("answer")){
}
} } try{ } int result=Integer.parseInt(answer); if(operator.equals("+")){ } message.setText("请输入数字字符"); if(result==numberOne+numberTwo){ } if(result==numberOne-numberTwo){ } message.setText("你回答正确"); message.setText("你回答错误"); }else{ message.setText("你回答正确"); message.setText("你回答错误"); }else{ }else if(operator.equals("-")){ }catch(NumberFormatException ex){ public void setJTextField(JTextField...t){ } public void setJLabel(http://bel){ } operatorLabel=label[0]; message=label[1]; textOne =t[0]; textTwo =t[1]; textResult =t[2];
ComputerFrame.java
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;
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(){ }); grade2.addActionListener(new ActionListener(){ }); choiceGrade.add(grade1); choiceGrade.add(grade2); menubar.add(choiceGrade); setJMenuBar(menubar); //【代码1】 //创建textOne,其可见字符长是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("确认答案"); public void actionPerformed(ActionEvent e){ } teacherZhang.setMaxInteger(50); public void actionPerformed(ActionEvent e){ } teacherZhang.setMaxInteger(10); add(getProblem); add(textOne); add(operatorLabel); add(textTwo); add(new Label("=")); add(textResult); add(giveAnswer); add(message); textResult.requestFocus(); textOne.setEditable(false); textTwo.setEditable(false); getProblem.setActionCommand("getProblem"); textResult.setActionCommand("answer"); giveAnswer.setActionCommand("answer");
} teacherZhang.setJLabel(operatorLabel,message); //【代码2】//将teacherZhang注册为getProblem的ActionEvent事件监视器 //【代码3】//将teacherZhang注册为giveAnswer的ActionEvent事件监视器 //【代码4】//将teacherZhang注册为textResult的ActionEvent事件监视器 setVisible(true); validate(); setDefaultCloseOperation(DISPOSE_ON_CLOSE); }
MainClass.java
public class MainClass {
} public static void main(String[] args) { } ComputerFrame frame; frame=new ComputerFrame(); frame.setTitle("算术测试"); frame.setBounds(100,100,650,180);
实验2 布局与日历
模板代码
CalendarBean.java
import java.util.Calendar;
public class CalendarBean {
String [] day;
int year=2008,month=0;
public int getYear() {
}
public void setYear(int year) {
}
public int getMonth() {
}
public void setMonth(int month) {
- 基于PLC控制的航空电镀生产线自动输送
- 中考预测课内外文言文对比阅读2
- 2018-2023年中国商业智能(BI)产业市场
- 中国金融体制改革研究2011new
- 外窗淋水试验方案
- 精益生产(Lean Production)
- 学校安全事故处置和信息报送制度
- Chapter 5 Human Resources Management
- 【小学数学】人教版小学六年级上册数学
- 初中数学解题方法与技巧
- 山东省创伤中心建设与管理指导原则(试
- 函数与数列的极限的强化练习题答案
- 10分钟淋巴按摩消脂
- 网络应急演练预案
- 服装设计入门基础知识
- 初二数学分式计算题练习
- (人教新课标)高二数学必修5第二章 数列
- 最新自主创业项目
- 北京大学 无机化学课件 4第4章 配合物
- 贸易公司业务管理制度




