Java Swing简易的计算器

1.编写程序,创建如下图所示的图形界面。(要求实现功能)
在这里插入图片描述
最终效果图:
在这里插入图片描述
源代码:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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


public class MyCaluator extends JFrame{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;



	MyCaluator(String title){
		super(title);
		
		
		//JPane以BorderLayout的形式布局
		JPanel p1 = new JPanel();
		JPanel p2 = new JPanel();
		JPanel p3 = new JPanel();
		Font myFont1 = new Font("serif",Font.BOLD,28);
		Font myFont2 = new Font("arial",Font.PLAIN,24);
		JPanel[] panel = {p1,p2,p3};
		Color[] color = {Color.pink,Color.cyan,Color.magenta};
		for(int i = 0;i < panel.length;i++) {
			panel[i].setBackground(color[i]);
			panel[i].setLayout(new GridLayout(3,1));
		}
		
		//JPanel1 的组件
		JLabel p1_text1 = new JLabel("   加数1:    ");
		JLabel p1_text2 = new JLabel("   加数2:    ");
		
		p1_text1.setFont(myFont1);
		p1_text2.setFont(myFont1);
		p1.add(p1_text1);
		p1.add(p1_text2);
		JButton p1_btn = new JButton("求和");
		p1.add(p1_btn);
		p1_btn.setFont(new Font("Dialog", Font.PLAIN, 18));
		
		//JPanel2 的组件
		TextField txt1 = new TextField();
		TextField txt2 = new TextField();
		TextField txt3 = new TextField();
		txt1.setFont(myFont2);
		txt2.setFont(myFont2);
		txt3.setFont(myFont2);
		p2.add(txt1);
		p2.add(txt2);
		p2.add(txt3);
		
		//JPanel3 的组件
		JLabel p3_txt1 = new JLabel("          ");
		JLabel p3_txt2 = new JLabel("          ");
		p3_txt1.setFont(myFont1);
		p3_txt2.setFont(myFont1);
		p3.add(p3_txt1);
		p3.add(p3_txt2);
		JButton p3_btn = new JButton("清除");
		
		p3.add(p3_btn);
		p3_btn.setFont(new Font("Dialog", Font.PLAIN, 18));
		
		
		//设置JFrame,添加3个Panel
		add(BorderLayout.WEST,p1);
		add(BorderLayout.CENTER,p2);
		add(BorderLayout.EAST,p3);
		setBackground(Color.pink);
		setBounds(400,300, getDefaultCloseOperation(), getDefaultCloseOperation());
		setSize(500,400);
		setVisible(true);
		
		//按钮 求和 的事件:
		p1_btn.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				String num1 = txt1.getText();
				String num2 = txt2.getText();
				
				//判断是否为空
				if("".equals(num1)) {
					txt1.requestFocus();
					return;
				}
				
				if("".equals(num2)) {
					txt2.requestFocus();
					return;
				}
				
				//判断是否为字符串
				boolean num1_legal = JudgeUtil.isDoubleOrFloat(num1);
				boolean num2_legal = JudgeUtil.isDoubleOrFloat(num2);
				
				if(num1_legal&&num2_legal) {
					double num_1 = Double.parseDouble(num1);
					double num_2 = Double.parseDouble(num2);
					Double num_3 = num_1 + num_2;
					txt3.setText(num_3.toString());
				}else {
					txt3.setText("请输入一个数字!");
				}

			}
			
		});
		
		//按钮 清空 的事件:
		p3_btn.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent action) {
				txt1.setText("");
				txt2.setText("");
				txt3.setText("");
			}
			
		
		});
	}
	
	
	
	public static void main(String[] args) {
		MyCaluator m = new MyCaluator("A simple caluator");
	}
}

class JudgeUtil{
//工具类,判断字符串是否为数字
	public static boolean isDoubleOrFloat(String str) {
		    return  str.matches("-?[0-9]+.*[0-9]*");
	}
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值