Java实验十三 GUI编程-事件处理

这篇博客介绍了如何使用Java实现GUI界面,包括事件处理机制,通过创建文本框和按钮实现简单的加法计算器。用户在两个文本框输入数字,点击等号按钮,结果显示在第三个文本框中。此外,还展示了如何设计一个界面,包含三个按钮和一个文本框,点击'问好'按钮会在文本框显示'你好!***',点击'再见'按钮则显示'再见,***'。实验总结强调了事件处理和监听器在GUI编程中的应用。
摘要由CSDN通过智能技术生成

一、实验目的

  1. 掌握事件处理的概念
  2. 掌握基本的事件处理相关的类

实验内容:

必做

  1. 编写一个程序,在第一个文本框中输入第一个加数,在第二个文本框中输入第二个数,当鼠标单击按钮“=”时,在第三个文本框中显示前两个加数的和。
    在这里插入图片描述
package ex13;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Totalizer2 extends JFrame implements ActionListener  {
	//继承了Frame,该类本身就是一个窗口。可用this替代创建面板
	JTextField t1,t2,t3;
	JButton b;
	JLabel label1,label2;
	
	public Totalizer2(){
		//窗口标题
		super("plus games!!");
		
		//Container c = getContentPane();
		
		//c.setLayout(new FlowLayout(FlowLayout.LEFT));
		this.setLayout(null);
		
		label1 = new JLabel("加法运算:");
		label1.setBounds(10,30, 70, 30);
		
		t1 = new JTextField();
		t1.setBounds(70, 30, 50, 30);
		label2 = new JLabel("+");
		label2.setBounds(130,30,50,30);
		
		t2 = new JTextField();
		t2.setBounds(150, 30, 50, 30);
		
		b = new JButton("=");
		b.setBounds(210, 30, 50, 30);
		//ActionListener al = new ActionListener();
		
		
		t3 = new JTextField();
		t3.setBounds(270, 30, 50, 30);
		
		this.add(label1);
		
		this.add(t1);
		
		this.add(label2);
		
		this.add(t2);
		
		this.add(b);
		
		this.add(t3);
		//关闭方式:点击关闭按钮
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//设置大小
		setSize(450,150);
		//设置可见
		setVisible(true);
		//不可调节窗口大小
		this.setResizable(false);
		//给按钮b注册监听者this
		b.addActionListener(this);
	}
	


	public static void main(String[] args) {
		//创建对象
		new Totalizer2();
	}

	 public void actionPerformed(ActionEvent e) {
	        if (e.getSource()==b) {
	        	// 如果事件源是b按钮
	            if (!this.t1.getText().matches("[0-9.-]+")) {
	                JOptionPane.showMessageDialog(getParent(),"请输入要计算的数字!");
	                t1.requestFocus();
	            }
	            else if (!this.t2.getText().matches("[0-9.-]+")) {
	                JOptionPane.showMessageDialog(getParent(),"请输入要计算的数字!");
	                t2.requestFocus();
	            }
	            else 
	            {
	              String a=this.t1.getText(),b=this.t2.getText(),c;
	              double one,two,sum;
	              one =Double.parseDouble(a);
	              two=Double.parseDouble(b);
	              sum=one+two;
	              c=String.valueOf(sum);
	              this.t3.setText(c);
	              // 标签setText 
	            }
	        }
	 }

}

运行结果:

在这里插入图片描述
2. 在第8章第7题的基础上,设计一个界面,第一行3个按钮,第二行中间一个文本框,第三行含有两个按钮,一个按钮显示“问好”字样,另一个按钮显示“再见”字样。当点击“问好”按钮时,第二行文本框中显示出“你好!*** ” 字样。点击“再见” 按钮时,文本框出现“再见,*** ”字样。

package ex13;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Button2 extends JFrame implements ActionListener{ // 一定要继承ActionListener才能用this
	//创建6个按钮
	JButton b1,b2,b3,b5,b6; ;
	//创建一个文本框
	JTextField t;
	public Button2() {
		
		super("按钮布局");
		
		//setResizable(false);
		setBounds(100,100,300,270);  
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//this.setLayout(null);
		setLayout(new GridLayout(3, 1));  // 3行1列
		//ActionListener a = new ActionListener();
		
		//分别给按钮起名字
		b1= new JButton("1");
		b2= new JButton("2");
		b3= new JButton("3");
		//b4= new JButton("4");
		b5 = new JButton("问好");
		b6 = new JButton("再见");
		//第一个面板
        JPanel p1=new JPanel();// 
        p1.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));
		p1.add(b1);
		p1.add(b2);
		p1.add(b3);
		add(p1);
		
		//第二个面板
		JPanel p2=new JPanel();
		//p2.add(b4);
		t = new JTextField(12);
		p2.add(t);
		p2.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));
		add(p2);
		
		//第三个面板
        JPanel p3=new JPanel(); 
        p3.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));
        p3.add(b5);
        b5.addActionListener(this);
		p3.add(b6);
		b6.addActionListener(this);
		add(p3); // JFrame默认边界布局
		
		setVisible(true);
		}
	//主程序
	public static void main(String[] args) {
		new Button2();
	}
	public void actionPerformed(ActionEvent e) {
		
	        if (e.getSource()==b5) {
	        	t.setText("你好!***");
	        	//b5.requestFocus();
	        }else if (e.getSource()==b6) {
	        	t.setText("再见!***");
	        	//b6.requestFocus();
	        }
	        
	
	}

}

运行结果:

在这里插入图片描述
在这里插入图片描述

实验总结:

学习了事件处理,监听器的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值