实验8 图形用户界面设计

这篇博客主要介绍了Java Swing GUI设计的实验内容,包括使用JFrame、JDialog、JPanel和Swing组件实现算术运算、算术测试、Choice组件交互、动态求和及平均值计算以及菜单功能。通过这些实例,读者可以掌握Swing的布局管理器、事件处理和组件应用。
摘要由CSDN通过智能技术生成

一、实验目的

  1、掌握可视化程序的结构和设计方法;

  2、熟练掌握JFrame、JDialog和JPanel等容器

  3、熟练掌握Swing的常用组件

  4、熟练掌握布局管理器的使用

  5、掌握Swing常用事件、事件类型和监听器接口

二、实验内容

1、算数运算

编写一个应用程序,设计一个窗体,其中有4个按钮,分别命名为 “ 加”、“减”、“乘”、“除”,以及3个文本框,单击相应的按钮,将两个文本框的数字做算术运算,在第3个文本框中显示结果。要求处理NumberFormatException。

import java.awt.Button;
import java.awt.FlowLayout;
import java.math.BigInteger;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Arithmetic extends JFrame {
	// 文本框
	JTextField text1, text2, text3;
	// 按钮
	JButton button1, button2, button3, button4;
	// 标签
	JLabel num1Label, num2Label, resultLabel;
	// 面板
	JPanel num1Panel, num2Panel, resultPanel, buttonPanel;

	public Arithmetic() {
		setTitle("算术运算");
		setBounds(100, 100, 400, 260);
		setVisible(true);
		setLayout(new FlowLayout());
		// 窗口居中
		setLocationRelativeTo(null);

		text1 = new JTextField(10);
		text1.setBounds(100, 20, 165, 40);
		text2 = new JTextField(10);
		text2.setBounds(100, 50, 165, 40);
		text3 = new JTextField(10);
		text3.setBounds(100, 80, 165, 40);

		button1 = new JButton("加");
		button2 = new JButton("减");
		button3 = new JButton("乘");
		button4 = new JButton("除");

		num1Label = new JLabel("请输入数字1:");
		num1Label.setBounds(10, 50, 80, 25);
		num2Label = new JLabel("请输入数字2");
		num2Label.setBounds(10, 20, 80, 25);
		resultLabel = new JLabel("结果:");
		resultLabel.setBounds(10, 60, 80, 25);

		num1Panel = new JPanel();
		num2Panel = new JPanel();
		resultPanel = new JPanel();
		buttonPanel = new JPanel();

		num1Panel.add(num1Label);
		num1Panel.add(text1);
		add(num1Panel);
		num2Panel.add(num2Label);
		num2Panel.add(text2);
		add(num2Panel);
		resultPanel.add(resultLabel);
		resultPanel.add(text3);
		add(resultPanel);
		buttonPanel.add(button1);
		buttonPanel.add(button2);
		buttonPanel.add(button3);
		buttonPanel.add(button4);
		add(buttonPanel);
		// 重新布局
		validate();
		// 加
		button1.addActionListener(e -> {
			String s1 = text1.getText();
			String s2 = text2.getText();
			try {
				BigInteger n1 = new BigInteger(s1);
				BigInteger n2 = new BigInteger(s2);
				n2 = n1.add(n2);
				text3.setText(n2.toString());
			} catch (NumberFormatException e2) {
				text3.setText("请输入数字!");
				text1.setText(null);
				text2.setText(null);
			}
		});
		// 减
		button2.addActionListener(e -> {
			String s1 = text1.getText();
			String s2 = text2.getText();
			try {
				BigInteger n1 = new BigInteger(s1);
				BigInteger n2 = new BigInteger(s2);
				n2 = n1.subtract(n2);
				text3.setText(n2.toString());
			} catch (NumberFormatException e2) {
				text3.setText("请输入数字!");
				text1.setText(null);
				text2.setText(null);
			}
		});
		// 乘
		button3.addActionListener(e -> {
			String s1 = text1.getText();
			String s2 = text2.getText();
			try {
				BigInteger n1 = new BigInteger(s1);
				BigInteger n2 = new BigInteger(s2);
				n2 = n1.multiply(n2);
				text3.setText(n2.toString());
			} catch (NumberFormatException e2) {
				text3.setText("请输入数字!");
				text1.setText(null);
				text2.setText(null);
			}
		});
		// 除
		button4.addActionListener(e -> {
			String s1 = text1.getText();
			String s2 = text2.getText();
			try {
				BigInteger n1 = new BigInteger(s1);
				BigInteger n2 = new BigInteger(s2);
				if(n2.toString()=="0") {
					text3.setText("除数不能为0");
				}else {
					n2=n1.divide(n2);
					text3.setText(n2.toStr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值