java使用工厂模式编写计算器(swing界面)
2017-10-30 16:50
501 查看
使用工厂模式编写计算器
首先我们先有算法这个接口
1:算法接口
2:算法工厂类
3:相加类
4:相减类
5:相乘类
6:相除类
7:swing页面类
效果图:
首先我们先有算法这个接口
1:算法接口
package com.v4; public class Arithmetic { public int count(String str){ return 0; } }
2:算法工厂类
package com.v4; public class ArithmeticFactory { public static Arithmetic getArith(String str){ Arithmetic ari = null; if(str.indexOf("+") != -1){ ari = new Add(); }else if(str.indexOf("-") != -1){ ari = new Minus(); }else if(str.indexOf("*") != -1){ ari = new Multiply(); }else if(str.indexOf("/") != -1){ ari = new Divide(); } return ari; } }
3:相加类
package com.v4; public class Add extends Arithmetic{ @Override public int count(String str) { String[] strs = str.split("\\+"); return Integer.parseInt(strs[0])+Integer.parseInt(strs[1]); } }
4:相减类
package com.v4; public class Minus extends Arithmetic{ @Override public int count(String str) { // TODO Auto-generated method stub String[] strs = str.split("-"); return Integer.parseInt(strs[0])-Integer.parseInt(strs[1]); }
5:相乘类
package com.v4; public class Multiply extends Arithmetic{ @Override public int count(String str) { // TODO Auto-generated method stub String[] strs = str.split("\\*"); return Integer.parseInt(strs[0])*Integer.parseInt(strs[1]); } }
6:相除类
package com.v4; public class Divide extends Arithmetic{ @Override public int count(String str) { // TODO Auto-generated method stub String[] strs = str.split("/"); return Integer.parseInt(strs[0])/Integer.parseInt(strs[1]); } }
7:swing页面类
package com.v4; import java.util.Scanner;package com.v4; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.Color; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.JLabel; import java.awt.event.FocusAdapter; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class Calculator extends JFrame implements ActionListener { private JPanel contentPane; private JTextField textField; JButton button_1; JButton button_2; JButton button_3; JButton button_4; JButton button_5; JButton button_6; JButton button_7; JButton button_8; JButton button_9; JButton button_0; JButton button_add; JButton button_minus; JButton button_mulptily; JButton button_divide; JButton button_clear; JButton button_equal; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public c8c9 void run() { try { Calculator frame = new Calculator(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Calculator() { setBackground(Color.WHITE); setTitle("计算器"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); JPanel panel = new JPanel(); contentPane.add(panel, BorderLayout.CENTER); panel.setLayout(null); textField = new JTextField(); textField.setBounds(12, 12, 412, 36); textField.setHorizontalAlignment(SwingConstants.RIGHT); panel.add(textField); textField.setColumns(10); button_4 = new JButton("4"); button_4.setBounds(12, 103, 85, 31); button_4.addActionListener(this); panel.add(button_4); button_5 = new JButton("5"); button_5.setBounds(120, 103, 85, 31); button_5.addActionListener(this); panel.add(button_5); button_1 = new JButton("1"); button_1.setBounds(12, 60, 85, 31); button_1.addActionListener(this); panel.add(button_1); button_6 = new JButton("6"); button_6.setBounds(231, 103, 85, 31); button_6.addActionListener(this); panel.add(button_6); button_7 = new JButton("7"); button_7.setBounds(12, 146, 85, 31); button_7.addActionListener(this); panel.add(button_7); button_8 = new JButton("8"); button_8.setBounds(120, 146, 85, 31); button_8.addActionListener(this); panel.add(button_8); button_9 = new JButton("9"); button_9.setBounds(231, 146, 85, 31); button_9.addActionListener(this); panel.add(button_9); button_2 = new JButton("2"); button_2.setBounds(120, 60, 85, 31); button_2.addActionListener(this); panel.add(button_2); button_3 = new JButton("3"); button_3.setBounds(231, 60, 85, 31); button_3.addActionListener(this); panel.add(button_3); button_0 = new JButton("0"); button_0.setBounds(12, 189, 85, 31); button_0.addActionListener(this); panel.add(button_0); button_clear = new JButton("清空"); button_clear.setBounds(120, 189, 85, 31); button_clear.addActionListener(this); panel.add(button_clear); button_add = new JButton("+"); button_add.setBounds(339, 60, 85, 31); button_add.addActionListener(this); panel.add(button_add); button_minus = new JButton("-"); button_minus.setBounds(339, 103, 85, 31); button_minus.addActionListener(this); panel.add(button_minus); button_mulptily = new JButton("*"); button_mulptily.setBounds(339, 146, 85, 31); button_mulptily.addActionListener(this); panel.add(button_mulptily); button_divide = new JButton("/"); button_divide.setBounds(339, 189, 85, 31); button_divide.addActionListener(this); panel.add(button_divide); button_equal = new JButton("="); button_equal.setBounds(231, 189, 85, 31); button_equal.addActionListener(this); panel.add(button_equal); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getSource() == button_equal) { Arithmetic ari = ArithmeticFactory.getArith(textField.getText()); int num = ari.count(textField.getText()); textField.setText("" + num); } else if (e.getSource() == button_clear) { textField.setText(""); } else { textField.setText(textField.getText() + e.getActionCommand()); } } }
效果图:
相关文章推荐
- Java Swing Ribbon(Flamingo)的使用02:更改界面风格
- JAVA编写有图形化界面的计算器
- Java编写的双色球计算器(不使用IDE)
- 自学Java之Java类库(使用创建Swing界面)(010day)
- 使用Java的Frame类编写的QQ登录界面
- 用Java Swing编写简单的测试小工具界面(源码) 分类: Java 2015-07-30 10:49 23人阅读 评论(0) 收藏
- Java基础:使用Swing进行动态界面设计 (1)
- 使用java swing完成简单的计算器
- JAVA界面组件---swing标签与按钮的使用与介绍
- JAVA使用swing/awt实现界面
- 用Java Swing编写简单的测试小工具界面(源码)
- Java基础:使用Swing进行动态界面设计 (2)
- Java Swing界面编程(23)---事件处理:编写用户验证登录用例
- 用Java swing 编写简单的计算器
- Java Swing编写小工具图形化界面
- 使用Swing组件编写一个支持中文文本编辑程序ChineseTextEdit.java
- 用Java Swing编写简单的测试小工具界面(源码)
- 一、使用JAVA_SWT编写登陆界面(不含数据库,登陆按钮未处理)
- 使用Java编写oracle存储过程
- 使用UML编写Java应用程序 (1)