您的位置:首页 > 编程语言 > Java开发

Java简易计算器

2016-01-28 13:48 369 查看
核心代码借鉴: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="<html><font style=\"color:red; font-size:20px;\">"+strText+"</font></html>";//设置字体格式
			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);
		
	}
}


结果如图所示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: