JAVA实验三 图形界面程序的界面设计

一、实验目的

1、掌握 Java 图形界面程序设计的基本思想和步骤。

2、掌握 JDK 中 AWT 包和 Swing 包的基本使用方法和区别。

3、掌握容器和布局的概念和使用。

4、掌握图形界面程序的界面设计方法和步骤。

二、实验类型

设计型

三、实验内容

1、自己编写所有代码,设计一个程序的界面。该程序的功能要求是:运行之后,界面要求基本如左 图所示。其中界面设计时的顶层容器要求使用 JFrame(或 Frame), 界面上的“简易计算器”、“运算数一”、“运算数二”、“运算结果” 这些提示标签使用组件 JLabel(或 Label),输入运算数和输出运 算结果使用 JTextField(或 TextField),“相加”、“相减”和“全 部清零”使用按钮 JButton(或 Button)。 请注意查阅 JDK 的 API 文档中这些相关的类,看看它们具有哪些构造函数可以用来生成 所需的对象,它们具有哪些方法可以用来进行调用。注意保存好 本次实验代码,下一次实验将会要求实现其事件处理以继续完善。

2、下面的左图和右图分别是 windows 系统中的标准型和科学型计算器的界面截图。打开你使用的微 软公司 Windows 操作系统或 Linux 等其它操作系统中自带的“计算器”软件,观察和参照其界面和功能, 实现一个接近其界面和功能的计算器(标准型或科学型)的界面。并保存好代码,在下一次实验中实现 其事件处理(即运算功能)。

四、代码

package 图形界面程序;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Calculator extends JFrame {
    private JLabel titleLabel;
    private JLabel numberOneLabel;
    private JLabel numberTwoLabel;
    private JLabel resultLabel;

    private JTextField numberOneTextField;
    private JTextField numberTwoTextField;
    private JTextField resultTextField;

    private JButton addButton;
    private JButton subtractButton;
    private JButton clearButton;

    public Calculator() {
        // 设置窗口标题和大小
        setTitle("简易计算器");
        setSize(800, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(6, 3));

        // 创建各个组件
        titleLabel = new JLabel("简易计算器");
        numberOneLabel = new JLabel("运算数一:");
        numberTwoLabel = new JLabel("运算数二:");
        resultLabel = new JLabel("运算结果:");
        numberOneTextField = new JTextField();
        numberTwoTextField = new JTextField();
        resultTextField = new JTextField();
        addButton = new JButton("相加");
        subtractButton = new JButton("相减");
        clearButton = new JButton("全部清零");

        // 添加组件到窗口
        add(titleLabel);
        add(new JLabel());
        add(numberOneLabel);
        add(numberOneTextField);
        add(numberTwoLabel);
        add(numberTwoTextField);
        add(resultLabel);
        add(resultTextField);
        add(addButton);
        add(subtractButton);
        add(clearButton);

        // 为按钮添加点击事件监听器
        addButton.addActionListener(new ActionListener() {
            
            public void actionPerformed(ActionEvent e) {
                calculate('+');
            }
        });

        subtractButton.addActionListener(new ActionListener() {
            
            public void actionPerformed(ActionEvent e) {
                calculate('-');
            }
        });

        clearButton.addActionListener(new ActionListener() {
            
            public void actionPerformed(ActionEvent e) {
                numberOneTextField.setText("");
                numberTwoTextField.setText("");
                resultTextField.setText("");
            }
        });

        setVisible(true);
    }

    // 计算结果
    private void calculate(char operator) {
        String num1 = numberOneTextField.getText();
        String num2 = numberTwoTextField.getText();

        // 检查运算数是否输入
        if (num1.isEmpty() || num2.isEmpty()) {
            JOptionPane.showMessageDialog(this, "请输入运算数", "错误", JOptionPane.ERROR_MESSAGE);
            return;
        }

        // 检查运算数是否合法
        if (!isNumber(num1) || !isNumber(num2)) {
            JOptionPane.showMessageDialog(this, "请输入合法的数值", "错误", JOptionPane.ERROR_MESSAGE);
            return;
        }

        // 将字符串转换为浮点数
        double number1 = Double.parseDouble(num1);
        double number2 = Double.parseDouble(num2);

        double result = 0;
        if (operator == '+') {
            result = number1 + number2;
        } else if (operator == '-') {
            result = number1 - number2;
        }

        // 显示结果
        resultTextField.setText(String.valueOf(result));
    }

    // 判断字符串是否为合法的数值
    private boolean isNumber(String str) {
        // 检查是否包含非法字符
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c != '.' && (c < '0' || c > '9')) {
                return false;
            }
        }

        // 检查小数点个数和位置
        if (str.indexOf('.') != str.lastIndexOf('.') ||
                str.startsWith(".") || str.endsWith(".")) {
            return false;
        }

        return true;
    }

    public static void main(String[] args) {
        new Calculator();
    }
}

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值