java华容道swing_java实验 JAVA Swing 图形用户界面和对话框概要1.doc

本文档展示了如何使用JAVA Swing构建一个简单的图形用户界面(GUI),用于进行算术测试。实验包含了Teacher类作为监视器,ComputerFrame类为用户提供GUI交互,MainClass作为程序入口。用户可以选择难度级别,程序将自动生成相应级别的算术题目,并通过对话框获取用户的答案。
摘要由CSDN通过智能技术生成

java实验 JAVA Swing 图形用户界面和对话框概要1

JAVA实验报告

课程名称 java实验 实验名称 JAVA Swing 图形用户界面和对话框

学 院__计算机学院__ 专业班级__软件 __

姓 名__ ____ 学号_ __实验日期:2015年4月30 日

实验目的

学习处理ActionEven事件;

学习使用布局类;

学习焦点、鼠标和键盘事件;

学习使用对话框。

实验内容

(-)实验题目一:算术测试 ,编写一个算术测试小软件,用来训练小学生的算术能力。

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 J

import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JButton; import javax.swing.JFrame; // ,, public class Hua_Rong_Road extends JFrame implements ActionListener, MouseListener, KeyListener { /** * */ private static final long serialVersionUID = 1L; Person person[] = new Person[10]; JButton left, right, above, below; JButton restart = new JButton("重新开始"); JButton nextpass = new JButton("下一关"); public Hua_Rong_Road() { init(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100, 100, 320, 500); setVisible(true); validate(); } public void init() { setLayout(null); add(restart); restart.setBounds(100, 360, 120, 35); restart.addActionListener(this); add(nextpass); nextpass.setBounds(100, 320, 120, 35); nextpass.addActionListener(this); String name[] = { "曹操", "关羽", "张", "刘", "周", "黄", "兵", "兵", "兵", "兵" }; for (int k = 0; k < name.length; k++) { person[k] = new Person(k, name[k]); person[k].addMouseListener(this); person[k].addKeyListener(this); add(person[k]); } person[0].setBounds(104, 54, 100, 100); person[1].setBounds(104, 154, 100, 50); person[2].setBounds(54, 154, 50, 100); person[3].setBounds(204, 154, 50, 100); person[4].setBounds(54, 54, 50, 100); person[5].setBounds(204, 54, 50, 100); person[6].setBounds(54, 254, 50, 50); person[7].setBounds(204, 254, 50, 50); person[8].setBounds(104, 204, 50, 50); person[9].setBounds(154, 204, 50, 50); person[9].requestFocus(); left = new JButton();// 四个边界 right = new JButton(); above = new JButton(); below = new JButton(); add(left); add(right); add(above); add(below); left.setBounds(49, 49, 5, 260); right.setBounds(254, 49, 5, 260); above.setBounds(49, 49, 210, 5); below.setBounds(49, 304, 210, 5); validate(); } @Override 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, right); } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseReleased(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 == right) x = x + 50; manRect.setLocation(x, y); Rectangle dirctionRect = direction.getBounds(); for (int k = 0; k < 10; k++) { Rectangle personRect = person[k].getBounds(); if ((manRect.intersects(personRect)) && (man.number != k)) move = false; } if (manRect.intersects(dirctionRect)) move = false; if (move == true) man.setLocation(x, y); } public void actionPerformed(ActionEvent e) { dispose(); new Hua_Rong_Road(); } } public class MainClass { public static void main(String[] args) { new Hua_Rong_Road(); } } import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.awt.Color; import javax.swing.JButton; public class Person extends JButton implements FocusListener { /** * */ private static final long serialVersionUID = 1L; int number; Color c=new Color(255, 245, 170); public Person(int number,String s) { super(s); setBackground(c); this.number=number; c=getBackground(); addFocusListener(this); } @Override public void focusGained(FocusEvent e) { setBackground(Color.red); } @Override public void focusLost(FocusEvent e) { setBackground(c); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值