用Java中swing组件写一个简单的整数加法计算器

前言:Hello,大家好,时隔14天终于更新了。最近学业过重,一周要做三到四个实验以及实验报告的撰写,所以拖更了。今天分享的内容是用Java中的Swing程序设计做了个简单的整数加法计算器(如果读者感性趣,可以将计算器升级一下)。如果对文章的内容大家有用,请大家点个赞或关注,谢谢大家!

正文:

这次计算器基于GridLayout布局管理器。那什么是GridLayout布局管理器呢?

 其中应用到JFrame窗体,以及JButton组件、JPanel面板等。以及事件监听实现。这次用到了ActionEvent动作事件。

代码实现:

用内部类实现时间监听:

public class JSQ {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(JSQ::Caculater);
    }
    private static void Caculater() {
        JFrame jf;
        JButton[] jb=new JButton[10];
        JPanel p1;
        jf=new JFrame("整数加法计算器");
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton add=new JButton("加");
        JButton equal=new JButton("等于");
        JButton clearshow =new JButton("清空");
        p1=new JPanel();
        p1.setLayout(new GridLayout(4,3,5,5));
        String str="0123456789";
        for (int i = 0; i < jb.length; i++) {
            jb[i]=new JButton(str.charAt(i)+"");
            int finalI = i;
            jb[i].addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String content=clearshow.getText();
                    if(content.equals("清空")) {
                        //这是第一个数得输入;
                        content=""+ finalI;
                    } else {
                        content+= finalI;
                    }
                    clearshow.setText(content);
                }
            });
            p1.add(jb[i]);
        }
        //add得监听器
        add.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String content=clearshow.getText();
                content+="+";
                clearshow.setText(content);
            }
        });
        p1.add(add);
        equal.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    String formula=clearshow.getText();
                    String[] nums=formula.split("\\+");
                    int result=0;
                    for (String num : nums) {
                        result += Integer.parseInt(num);
                    }
                    formula+="="+result;
                    clearshow.setText(formula);

                }
                catch(Exception ex) {
                    jf.setTitle("输入错误,请按长按钮清空");
                }
            }
        });
        p1.add(equal);
        clearshow.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                clearshow.setText("清除");
            }
        });
        jf.add(clearshow,BorderLayout.PAGE_START);
        jf.add(p1);
        jf.setBounds(100,100,350,250);
        jf.setVisible(true);
    }
}

用接口实现时间监听

public class hw_1 extends JFrame implements ActionListener{
	JButton numButton[]=new JButton[10];
	JButton add=new JButton("加");
	JButton equal=new JButton("等于");
	JButton clear_show =new JButton("清空");
	public hw_1(){
		JPanel center=new JPanel();
		//网格布局;
		center.setLayout(new GridLayout(4, 3));
		
		for(int i=0;i<10;i++) {
			numButton[i]=new JButton(""+i);
			numButton[i].addActionListener(this);
			center.add(numButton[i]);
		}
		center.add(add);
		add.addActionListener(this);
		center.add(equal);
		//注册监听器l;
		equal.addActionListener(this);
		clear_show.addActionListener(this);
		add(clear_show,BorderLayout.NORTH);
		add(center,BorderLayout.CENTER);
		setTitle("整数加法器");
		setLocation(100, 100);
		setSize(350, 200);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	

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

	@Override
	public void actionPerformed(ActionEvent e) {
		JButton curr=(JButton) e.getSource();
		if(curr==clear_show) {
			clear_show.setText("清空");
		}
		for(int i=0;i<10;i++) {
			if(curr==numButton[i]) {
				String content=clear_show.getText();
				if(content.equals("清空")) {
					//这是第一个数得输入;
					content=""+i;
				} else {
					content+=i;
				}
				clear_show.setText(content);
			}
		}
		
		
		if(curr==add) {
			String content=clear_show.getText();
			content+="+";
			clear_show.setText(content);
		}
		if(curr==equal) {
			try {
				String formula=clear_show.getText();
				String[] nums=formula.split("\\+");
				int result=0;
				for (String num : nums) {
					result += Integer.parseInt(num);
				}
				formula+="="+result;
				clear_show.setText(formula);
						
			}
			catch(Exception ex) {
				setTitle("输入错误,请按长按钮清空");
			}
		}
	}
}

运行结果

 

 

总结

最近太忙,不过还是会抽空来更新的谢谢大家的支持!

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
好的,我可以回答这个问题。以下是一个简单Java Swing计算器的代码示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculator extends JFrame implements ActionListener { private JTextField textField; private JButton[] buttons; private String[] buttonLabels = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"}; private double num1, num2, result; private String operator; public Calculator() { setTitle("Calculator"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); textField = new JTextField(20); textField.setEditable(false); textField.setHorizontalAlignment(JTextField.RIGHT); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new GridLayout(4, 4)); buttons = new JButton[16]; for (int i = 0; i < 16; i++) { buttons[i] = new JButton(buttonLabels[i]); buttons[i].addActionListener(this); buttonPanel.add(buttons[i]); } getContentPane().add(textField, BorderLayout.NORTH); getContentPane().add(buttonPanel, BorderLayout.CENTER); pack(); setLocationRelativeTo(null); setVisible(true); } public void actionPerformed(ActionEvent e) { String label = e.getActionCommand(); if (label.equals("C")) { textField.setText(""); } else if (label.equals("+/-")) { double value = Double.parseDouble(textField.getText()); value = -value; textField.setText(Double.toString(value)); } else if (label.equals("%")) { double value = Double.parseDouble(textField.getText()); value = value / 100; textField.setText(Double.toString(value)); } else if (label.equals("/") || label.equals("*") || label.equals("-") || label.equals("+")) { num1 = Double.parseDouble(textField.getText()); operator = label; textField.setText(""); } else if (label.equals("=")) { num2 = Double.parseDouble(textField.getText()); if (operator.equals("/")) { result = num1 / num2; } else if (operator.equals("*")) { result = num1 * num2; } else if (operator.equals("-")) { result = num1 - num2; } else if (operator.equals("+")) { result = num1 + num2; } textField.setText(Double.toString(result)); } else { textField.setText(textField.getText() + label); } } public static void main(String[] args) { new Calculator(); } } ``` 这个计算器使用了Java Swing组件来创建一个简单的GUI界面。它包括一个文本框和16个按钮,可以进行基本的加、减、乘、除、百分比和正负号计算。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值