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方便
![](http://img.blog.csdn.net/20160128135417004?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
结果如图所示:
事件处理方法借鉴了: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); } }
结果如图所示:
相关文章推荐
- Java中的自动装箱与拆箱
- 常见 Java 字节码 指令 助记符
- Java中的get()和set()方法
- JAVA基础----java中E,T,?的区别?
- MyEclipse2014破解小记
- springmvc之json数据交互controller方法返回值为简单类型
- JAVA中最常用的十个快捷键
- Java 定时任务
- Eclipse搭建Maven工程集成Spring4+Hibernate5
- Java WebService 简单实例
- Use the endorsed directory mechanism to place jaxb-api.jar(jaxb-api.jar、jaxws-api.jar与jdk1.6不兼容问题)
- java 并发笔记
- Java中的集合
- Eclipse ADT 插件安装慢的解决的方法
- eclipse maven工程导入到MyEclipse出现"Versions of Spring facet could not be detected”的解决方法
- MyEclipse 10的.properties文件中文显示问题
- Spring4MVC中配置返回json格式数据
- java基础之finally补遗
- Struts2 拦截器具体配置过程
- Spring 源码分析(一) —— 迈向Spring之路