Java程序设计(四)

事件处理和图形化用户界面

实验编号: 实验四
实验主题: 事件处理和图形化用户界面
实验目的:
(1)理解事件处理的机制,掌握基本的事件处理的方法;
(2)理解图形化用户界面的设计,掌握Swing包中基本界面元素的使用。
实验要求:
(1)掌握图形用户界面中常见组件的名称、分类;
(2)掌握事件源、事件对象、事件监听器的概念,掌握ActionEvent、ActionListener的使用;
(3)掌握JFrame、JPanel、BorderLayout、FlowLayout、JButton、JTextField、JTextArea的使用;
(4)在Eclipse或Netbeans环境下完成选作实验内容;
(5)认真撰写完整的实验报告。
实验步骤:
(1)首先根据要求设计图形用户界面和程序中需要的类;
(2)定义继承自JPanel的面板类,用于布局和绘制;定义继承自JFrame的类,在该类中完成界面的设计;
(3)定义事件监听器类完成事件处理;
(4)定义一个包含main方法的测试类,在该类中创建框架类对象,并显示;
(5)编译、调试、运行程序。
实验提示: (1)使用面板进行页面布局; (2)使用内部类定义事件监听器类; (3)按钮点击通过处理ActionEvent事件来完成响应。

题目4-1:显示表情
编写程序,显示不同的表情。在窗口上至少包括4个按钮,分别控制显示不同的表情和退出程序。示例输出如图所示。

在这里插入图片描述

package test4_1;

import javax.swing.*;

public class Display_expression extends JFrame {
	JPanel frame;
	JButton smile;
	JButton cry;
	JButton angry;
	JButton exit;
	JLabel label;
	ImageIcon icon1 = new ImageIcon("src\\test4_1\\smile.png");
	ImageIcon icon2 = new ImageIcon("src\\test4_1\\cry.png");
	ImageIcon icon3 = new ImageIcon("src\\test4_1\\angry.png");
	
}
package test4_1;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Test_Frame extends Display_expression{
	public Test_Frame() {//构造函数,搭建显示界面
		frame = new JPanel();//创建面板组件
		getContentPane().add(frame,BorderLayout.CENTER);
		//先获取默认的内容面板,然后在默认内容面板的BorderLayout.CENTER位置增加frame面板
		frame.setLayout(null);//无默认排版
		frame.setBounds(100,100,400,300);//面板大小位置
		this.setBounds(400,100,480,380);//设置窗体位置及大小,this可省略
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //用户单击关闭时程序执行
		setTitle("显示表情");//设置窗体标题
		setVisible(true);//设置窗体可见
		//设置文本图片标签
		label = new JLabel();
		frame.add(label);
		label.setBounds(90,30,300,200);
		label.setText("请点击按钮");
		label.setFont(new Font(null, Font.PLAIN, 35));
		//设置微笑按钮
		smile = new JButton("微笑");
		frame.add(smile);
		smile.setBounds(50,250,60,30);
		smile.addActionListener(new ActionListener() {//动作
			public void actionPerformed(ActionEvent e) {
				label.setIcon(icon1);
			}
		});
		//设置流泪按钮
		cry = new JButton("流泪");
		frame.add(cry);
		cry.setBounds(150,250,60,30);
		cry.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				label.setIcon(icon2);
			}
		});
		//设置生气按钮
		angry = new JButton("生气");
		frame.add(angry);
		angry.setBounds(250, 250, 60, 30);
		angry.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				label.setIcon(icon3);
			}
		});
		//退出
		exit = new JButton("退出");
		frame.add(exit);
		exit.setBounds(350, 250, 60, 30);
		exit.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				System.exit(0);
			}
		});
		
	}
	
	public static void main(String[] args) {
			Test_Frame test4_1 = new Test_Frame();	
	}
}

题目4-2:猜数游戏
编写一个猜数程序,该程序随机在1到1000的范围中选择一个供用户猜测的整数。界面上提供一个文本框来接收用户输入的猜测的数,如果用户猜得太大,则背景变为红色,如果猜得太小,背景变为蓝色。用户猜对后,文本框变为不可编辑,同时提示用户猜对了。界面上提供一个按钮,使用户可以重新开始这个游戏。在界面上还需显示用户猜测的次数。示例输出如图所示。
在这里插入图片描述

在这里插入代码片
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值