实验报告5解析

本文介绍如何使用Java Swing库创建图形用户界面,实现阶乘计算功能及一个简单的计算器。用户可通过文本框输入数值,选择运算符,然后通过按钮触发计算,结果显示在文本框中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建窗口中包含两个文本框和一个命令按钮,用户可在可编辑的文本框中输入数字n,单击命令按钮计算后,另一个不可编辑的文本框显示计算结果1!+2!+…+n!。

public class work2 {
	public static void main(String[] args) {
		jiecheng jie=new jiecheng();
		jie.setBounds(300, 300, 300, 500);
	}
}

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class jiecheng extends JFrame {

	public JTextField testin;
	public JTextField testout;
	public JButton button;
	public jianshiqi listener;
	public jiecheng() {
		init();
		setVisible(true);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	}
	void init() {
		setLayout(new FlowLayout());
		testin=new JTextField(5);
		add(testin);
		button=new JButton("经计算");
		add(button);
		testout=new JTextField(10);
		testout.setEditable(false);
		add(testout);
		listener=new jianshiqi();
		listener.setview(this);//将当前窗口的引用传递给监视器
		testin.addActionListener(listener);
		button.addActionListener(listener);
		
	}
}

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class jianshiqi implements ActionListener {
	jiecheng view;
	public void setview(jiecheng view) {
		this.view=view;
	}
	public static int jiecheng(int n){
		if(n==1)
		return 1;
		else
		return n*jiecheng(n-1);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		int n,m=0;
		String s=view.testin.getText();
		try {
			n=Integer.parseInt(s);
			for(int i=1;i<=n;i++) {
				m=m+jiecheng(i);
			}
			String sr=String.valueOf(m);
			view.testout.setText(sr);
		} catch (Exception e2) {
			// TODO: handle exception
			view.testin.setText("请输入数字");
		}
	}
}

2.编写程序,实现简单的计算器

(1) 用户在窗口中的两个文本框中输入参与运算的两个操作数。
(2) 用户在下拉列表中选择运算符触发ItemEvent,ItemEvent事件的监视器operator(OperatorListener类负责创建)获得运算符,并将运算符传递给ActionEvent事件的监视器computer。
(3) 用户单击按钮触发ActionEvent事件,监视器computer(ComputerListener类负责创建)给出运算结果。


public class work12 {
	public static void main(String[] args) {
		WindowView view=new WindowView();
		view.setBounds(100, 100, 390, 360);
		view.setTitle("计算器");
	}
}
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class WindowView extends JFrame{
	public JTextField innumber1,innumber2;//文本框
	public JComboBox<String>choiceFuhao;//下拉列表
	public JTextArea textShow;//文本区
	public JButton button;//按钮
	public OperatorListener operator;//监视ItemEvent事件的监视器
	public ComputerListener computer;//监视ActionEvent事件的监视器
	public WindowView() {
		init();
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	void init() {
		setLayout(new FlowLayout());
		innumber1=new JTextField(10);
		innumber2=new JTextField(10);
		choiceFuhao=new JComboBox<String>();
		button =new JButton("计算");
		choiceFuhao.addItem("选择运算符号:");
		String[]a= {"+","-","*","/"};
		for(int i=0;i<a.length;i++) {
			choiceFuhao.addItem(a[i]);
		}
		textShow=new JTextArea(9,30);
		operator=new OperatorListener();
		computer=new ComputerListener();
		operator.setView(this);//将当前窗口的引用传递给监视器
		computer.setView(this);//将当前窗口的引用传递给监视器
		choiceFuhao.addItemListener(operator);//choiceFuhao是事件源,operator是监视器
		button.addActionListener(computer);//button是事件源,computer是监视器
		add(innumber1);
		add(choiceFuhao);
		add(innumber2);
		add(button);
		add(new JScrollPane(textShow));
	}

}

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class OperatorListener implements ItemListener {
	WindowView view;
	public void setView(WindowView view) {
		this.view=view;
	}
	@Override
	public void itemStateChanged(ItemEvent e) {
		String fuhao=view.choiceFuhao.getSelectedItem().toString();
		view.computer.setFuhao(fuhao);
	}
}

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ComputerListener implements ActionListener {
	WindowView view;
	String fuhao;
	public void setView(WindowView view) {
		this.view=view;
	}
	public void setFuhao(String s) {
		this.fuhao=s;
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		try {
			double number1=Double.parseDouble(view.innumber1.getText());
			double number2=Double.parseDouble(view.innumber2.getText());
			double result=0;
			boolean isShow=true;
			if(fuhao.equals("+")) {
				result=number1+number2;
			}else if(fuhao.equals("-")) {
				result=number1-number2;
			}else if(fuhao.equals("*")) {
				result=number1*number2;
			}else if(fuhao.equals("/")) {
				result=number1/number2;
			}else {
				isShow=false;
			}
			if(isShow) {
				view.textShow.append(number1+" "+fuhao+" "+number2+"="+result+"\n");
			}
		} catch (Exception e2) {
			// TODO: handle exception
			view.textShow.append("\n请输入数字字符\n");
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值