博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java简易计算器
阅读量:4030 次
发布时间:2019-05-24

本文共 7860 字,大约阅读时间需要 26 分钟。

核心代码借鉴:http://download.csdn.net/download/wei_zq/3749034

事件处理方法借鉴了:http://www.jinxuliang.com/course/PPT/Show/54699909137e420664f62751  (内部类思想)

方法:使用Swing Designer绘制了一个JFrame界面;排版时Layout使用Absolute方便

//简易计算器import java.awt.BorderLayout;import java.awt.Color;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JSplitPane;import javax.swing.JInternalFrame;import java.awt.FlowLayout;import javax.swing.BoxLayout;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.event.MouseListener;import java.awt.GridLayout;import javax.swing.JTextField;import java.awt.GridBagLayout;import java.awt.Font;import javax.swing.SwingConstants;import javax.swing.JMenuBar;import javax.swing.JMenu;import javax.swing.JMenuItem;import org.omg.CORBA.PUBLIC_MEMBER;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;public class GUITest extends JFrame {	//事件监听器接口	private class ButtonListener implements ActionListener{		public void actionPerformed(ActionEvent e){			JButton btn = (JButton)e.getSource();						now=btn.getText();//获取按钮的文本			//处理运算符号			if (now == "+" || now == "-" || now == "*" || now == "/"					|| now == "=") {				if (front == "+") {// 完成加法运算					if (c == 0) {						second = Double.parseDouble(textResult.getText());						first = first + second;						textResult.setText(String.valueOf(first));						front = now;						c = 1;					}				} else if (front == "-") {					if (c == 0) {						second = Double.parseDouble(textResult.getText());						first = first - second;						textResult.setText(String.valueOf(first));						front = now;						c = 1;					}				} else if (front == "*") {					if (c == 0) {						second = Double.parseDouble(textResult.getText());						first = first * second;						textResult.setText(String.valueOf(first));						front = now;						c = 1;					}				} else if (front == "/") {					if (c == 0) {						second = Double.parseDouble(textResult.getText());						first = first / second;						textResult.setText(String.valueOf(first));						front = now;						c = 1;					}				} else if (front == "=") {// 处理等号					first = Double.parseDouble(textResult.getText());					textResult.setText(String.valueOf(first));					c = 1;					front = now;				}			} else {// 处理数字				if (c == 1) {					textResult.setText("");					c = 0;				}				res = textResult.getText();				res += now;				textResult.setText(res);			}		}	}	//事件适配器	private class MouseHandler extends MouseAdapter{		public void mouseEntered(MouseEvent e) {			JButton button=(JButton)e.getSource();			button.setBackground(Color.CYAN);						String strText=button.getText();			strText=""+strText+"";//设置字体格式			button.setToolTipText(strText);//设置鼠标在Button上停留时显示提示信息		}		public void mouseExited(MouseEvent e){			JButton button=(JButton)e.getSource();			button.setBackground(null);		}	}		private String now;    //存放当前按钮	private static String front = "+";     //存放前一次运算符	private String res;    //存放当前文本框的值	private static double first = 0;    //存放左值	private double second;     //存放右值		private int c = 1;     //按过=号,完成一次运算;重新开始		private JPanel contentPane;	private JTextField textResult;	/**	 * Launch the application.	 */	public static void main(String[] args) {		EventQueue.invokeLater(new Runnable() {			public void run() {				try {					GUITest frame = new GUITest();					frame.setVisible(true);				} catch (Exception e) {					e.printStackTrace();				}			}		});	}	/**	 * Create the frame.	 */	public GUITest() {		setTitle("GUITest\u4E4B\u7B80\u6613\u8BA1\u7B97\u5668");		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		setBounds(100, 100, 464, 326);		contentPane = new JPanel();		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));		setContentPane(contentPane);		contentPane.setLayout(null);				textResult = new JTextField();		textResult.setEditable(false);		textResult.setHorizontalAlignment(SwingConstants.RIGHT);		textResult.setFont(new Font("Times New Roman", Font.PLAIN, 30));		textResult.setText("0");		textResult.setBounds(10, 40, 428, 59);		contentPane.add(textResult);		textResult.setColumns(10);				ButtonListener ourListener=new ButtonListener();				JButton button_0 = new JButton("0");		button_0.addMouseListener(new MouseHandler());		button_0.addActionListener(	ourListener	);		button_0.setBounds(14, 109, 72, 42);		contentPane.add(button_0);				JButton button_1 = new JButton("1");		button_1.addMouseListener(new MouseHandler());		button_1.addActionListener(ourListener);		button_1.setBounds(100, 109, 72, 42);		contentPane.add(button_1);				JButton button_2 = new JButton("2");		button_2.addMouseListener(new MouseHandler());		button_2.addActionListener(ourListener);		button_2.setBounds(186, 109, 72, 42);		contentPane.add(button_2);				JButton button_3 = new JButton("3");		button_3.addMouseListener(new MouseHandler());		button_3.addActionListener(ourListener);		button_3.setBounds(272, 109, 72, 42);		contentPane.add(button_3);				JButton button_4 = new JButton("4");		button_4.addMouseListener(new MouseHandler());		button_4.addActionListener(ourListener);		button_4.setBounds(358, 109, 72, 42);		contentPane.add(button_4);				JButton button_5 = new JButton("5");		button_5.addMouseListener(new MouseHandler());		button_5.addActionListener(ourListener);		button_5.setBounds(14, 173, 72, 42);		contentPane.add(button_5);				JButton button_9 = new JButton("9");		button_9.addMouseListener(new MouseHandler());		button_9.addActionListener(ourListener);		button_9.setBounds(358, 173, 72, 42);		contentPane.add(button_9);				JButton button_6 = new JButton("6");		button_6.addMouseListener(new MouseHandler());		button_6.addActionListener(ourListener);		button_6.setBounds(100, 173, 72, 42);		contentPane.add(button_6);				JButton button_7 = new JButton("7");		button_7.addMouseListener(new MouseHandler());		button_7.addActionListener(ourListener);		button_7.setBounds(186, 173, 72, 42);		contentPane.add(button_7);				JButton button_8 = new JButton("8");		button_8.addMouseListener(new MouseHandler());		button_8.addActionListener(ourListener);		button_8.setBounds(272, 173, 72, 42);		contentPane.add(button_8);				JButton button_10 = new JButton("+");		button_10.addMouseListener(new MouseHandler());		button_10.addActionListener(ourListener);		button_10.setBounds(14, 235, 72, 42);		contentPane.add(button_10);				JButton button_14 = new JButton("=");		button_14.addMouseListener(new MouseHandler());		button_14.addActionListener(ourListener);		button_14.setBounds(358, 235, 72, 42);		contentPane.add(button_14);				JButton button_11 = new JButton("-");		button_11.addMouseListener(new MouseHandler());		button_11.addActionListener(ourListener);		button_11.setBounds(100, 235, 72, 42);		contentPane.add(button_11);				JButton button_12 = new JButton("*");		button_12.addMouseListener(new MouseHandler());		button_12.addActionListener(ourListener);		button_12.setBounds(186, 235, 72, 42);		contentPane.add(button_12);				JButton button_13 = new JButton("/");		button_13.addMouseListener(new MouseHandler());		button_13.addActionListener(ourListener);		button_13.setBounds(272, 235, 72, 42);		contentPane.add(button_13);				JMenuBar menuBar = new JMenuBar();		menuBar.setBounds(0, 0, 125, 30);		contentPane.add(menuBar);				JMenu mnNewMenu_View = new JMenu("\u67E5\u770B");		menuBar.add(mnNewMenu_View);				JMenu mnNewMenu_Edit = new JMenu("\u7F16\u8F91");		menuBar.add(mnNewMenu_Edit);				JMenu mnNewMenu_Help = new JMenu("\u5E2E\u52A9");		menuBar.add(mnNewMenu_Help);				JMenuItem menuItem_about = new JMenuItem("\u5173\u4E8E...");		menuItem_about.addActionListener(new ActionListener() {			public void actionPerformed(ActionEvent e) {				JOptionPane.showMessageDialog(null,"GUITest", "第一个作品", JOptionPane.PLAIN_MESSAGE);			}		});		mnNewMenu_Help.add(menuItem_about);			}}

结果如图所示:

你可能感兴趣的文章
[关注大学生]求职不可不知——怎样的大学生不受欢迎
查看>>
[关注大学生]读“贫困大学生的自白”
查看>>
[互联网关注]李开复教大学生回答如何学好编程
查看>>
[关注大学生]李开复给中国计算机系大学生的7点建议
查看>>
[关注大学生]大学毕业生择业:是当"鸡头"还是"凤尾"?
查看>>
[茶余饭后]10大毕业生必听得歌曲
查看>>
gdb调试命令的三种调试方式和简单命令介绍
查看>>
C++程序员的几种境界
查看>>
VC++ MFC SQL ADO数据库访问技术使用的基本步骤及方法
查看>>
VUE-Vue.js之$refs,父组件访问、修改子组件中 的数据
查看>>
Vue-子组件改变父级组件的信息
查看>>
Python自动化之pytest常用插件
查看>>
Python自动化之pytest框架使用详解
查看>>
【正则表达式】以个人的理解帮助大家认识正则表达式
查看>>
性能调优之iostat命令详解
查看>>
性能调优之iftop命令详解
查看>>
非关系型数据库(nosql)介绍
查看>>
移动端自动化测试-Windows-Android-Appium环境搭建
查看>>
Xpath使用方法
查看>>
移动端自动化测试-Mac-IOS-Appium环境搭建
查看>>