简易计算器---JAVA
来源:互联网 发布:mac os x10.10.5迅雷 编辑:程序博客网 时间:2024/06/18 14:15
实验题目:基于Java Swing的应用程序实验
实现效果:
实验目的:学习使用Eclipse编写运行Java程序,综合应用Java的SWING、输入输出流和数据库的相关操作
实验内容:设计并实现一个GUI简易计算器要求:
(1)至少实现“+”、“-”、“*”、“/”、“%”的运算;
(2)调用Math类的相关方法,至少实现对数运算、幂运算;
(3)利用菜单条、菜单项、菜单至少实现数值的“复制”、“粘贴”、“剪切”、“退出”的功能,并添加相应的快捷键,分别为“Ctrl+c”、“Ctrl+v”、“Ctrl+x”、“Ctrl+e”;
(4)检查数据的合法性,若输入数据不合法,则调用文本框类的相关方法,弹出窗口提示用户进行正确的输入;
(5)体现出是自己的工作量,界面至少显示作者的班级、姓名、学号。
具体代码:
Computer.javapublic class computer { public static void main(String args[]){ WindowOperation win=new WindowOperation(); win.setBounds(700,300,500,400); win.setTitle("简易计算器"); }}ComputerListener.javaimport java.awt.event.*;import javax.swing.*;import java.awt.*;public class ComputerListener implements ActionListener { JTextField inputNumberOne,inputNumberTwo; JTextArea textShow; String fuhao=" "; public void setJTextFieldOne(JTextField t){ inputNumberOne =t; } public void setJTextFieldTwo(JTextField t){ inputNumberTwo =t; } public void setJTextArea(JTextArea area){ textShow =area; } public void setFuhao(String s){ fuhao=s; } static public double log(double value, double base) { double a=0; a=Math.log(value)/Math.log(base); return a; } public void actionPerformed(ActionEvent e){ try{ double number1; double number2; double result=0; number1=Double.parseDouble(inputNumberOne.getText()); number2=Double.parseDouble(inputNumberTwo.getText()); if(fuhao.equals("+")){ result=number1+number2; } else if(fuhao.equals("-")){ result=number1-number2; } else if(fuhao.equals("*")){ result=number1*number2; } else if(fuhao.equals("/")){ result=number1/number2; } else if(fuhao.equals("%")){ result=number1%number2; } else if(fuhao.equals("幂运算")){ result=Math.pow(number1, number2); } else if(fuhao.equals("对数运算")){ result=log(number1,number2); } if(fuhao.equals(" ")){ JOptionPane.showMessageDialog(null,"请输入运算符号","警告对话框",JOptionPane.WARNING_MESSAGE); } else{ textShow.append(number1+" "+fuhao+" "+number2+"="+result+"\n"); } } catch(Exception exp){ JOptionPane.showMessageDialog(null,"请输入数字","警告对话框",JOptionPane.WARNING_MESSAGE); } }}ConcreteMediator.javaimport javax.swing.*;import java.awt.datatransfer.*;public class ConcreteMediator { JMenu menu; JMenuItem copyItem,cutItem,pasteItem; JTextArea text; public void openMenu(){ Clipboard clipboard =text.getToolkit().getSystemClipboard(); String str =text.getSelectedText(); if(str==null){ copyItem.setEnabled(false); cutItem.setEnabled(false); } else{ copyItem.setEnabled(true); cutItem.setEnabled(true); } boolean boo =clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor); if(boo){ pasteItem.setEnabled(true); } } public void paste(){ text.paste(); } public void copy(){ text.copy(); } public void cut(){ text.cut(); } public void registerMenu(JMenu menu){ this.menu=menu; } public void registerPasteItem(JMenuItem item){ pasteItem=item; } public void registerCopyItem(JMenuItem item){ copyItem=item; copyItem.setEnabled(false); } public void registerCutItem(JMenuItem item){ cutItem =item; cutItem.setEnabled(false); } public void registerText(JTextArea text){ this.text=text; }}WindowOperation.javaimport java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.border.EmptyBorder;import java.awt.FlowLayout;import javax.swing.*;import java.awt.*;import java.awt.event.*;import javax.swing.event.*;public class WindowOperation extends JFrame { /** * */private static final long serialVersionUID = 1L;JTextField inputNumberOne,inputNumberTwo; JComboBox<String>choiceFuhao; JTextArea textShow; JButton button; JMenuBar menubar; JMenu menu; JMenuItem copyItem,cutItem,pasteItem,quitItem; OperatorListener operator; ComputerListener computer; private JTextField textField; public WindowOperation(){ init(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void init(){ getContentPane().setLayout(new FlowLayout()); inputNumberOne =new JTextField(5); inputNumberTwo =new JTextField(5); choiceFuhao =new JComboBox<String>(); button = new JButton("计算"); choiceFuhao.addItem("选择运算符号"); String []a={"+","-","*","/","%","幂运算","对数运算"}; for(int i=0; i<a.length;i++){ choiceFuhao.addItem(a[i]); } textShow =new JTextArea(9,30); operator =new OperatorListener(); computer =new ComputerListener(); ConcreteMediator mediator=new ConcreteMediator(); menubar=new JMenuBar(); menu=new JMenu("编辑"); menu.addMenuListener(new MenuListener(){ public void menuSelected(MenuEvent e){mediator.openMenu();} public void menuDeselected(MenuEvent e){} public void menuCanceled(MenuEvent e){} }); copyItem=new JMenuItem("复制"); copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK)); copyItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){mediator.copy(); } }); cutItem=new JMenuItem("剪切"); cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK)); cutItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){mediator.cut(); } }); pasteItem=new JMenuItem("粘贴"); pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK)); pasteItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){mediator.paste(); } });quitItem = new JMenuItem("退出");quitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));quitItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.exit(0);}}); operator.setJComboBox(choiceFuhao); operator.setWorkTogether(computer); computer.setJTextFieldOne(inputNumberOne); computer.setJTextFieldTwo(inputNumberTwo); computer.setJTextArea(textShow); choiceFuhao.addItemListener(operator); button.addActionListener(computer); menubar.add(menu); menu.add(cutItem); menu.add(copyItem); menu.add(pasteItem); menu.add(quitItem); setJMenuBar(menubar); add(textShow,BorderLayout.CENTER); mediator.registerMenu(menu);mediator.registerCopyItem(copyItem);mediator.registerCutItem(cutItem);mediator.registerPasteItem(pasteItem);mediator.registerText(textShow); getContentPane().add(inputNumberOne); getContentPane().add(choiceFuhao); getContentPane().add(inputNumberTwo); getContentPane().add(button); getContentPane().add(new JScrollPane(textShow)); JLabel biaoqian=new JLabel("软件154 201507207 魏煜昊 "); getContentPane().add(biaoqian); }}OperatorListener.javaimport java.awt.event.*;import javax.swing.*;public class OperatorListener implements ItemListener { JComboBox <String>choice; ComputerListener workTogether; public void setJComboBox(JComboBox<String> box){ choice=box; } public void setWorkTogether(ComputerListener computer){ workTogether =computer; } public void itemStateChanged(ItemEvent e){ String fuhao =choice.getSelectedItem().toString(); workTogether.setFuhao(fuhao); }}
实现效果:
0 0
- 简易Java控制台计算器
- Java简易计算器
- Java 简易计算器程序
- 一个Java简易计算器
- Java—简易计算器
- JAVA编写简易计算器
- 简易计算器(JAVA)
- JAVA实现简易计算器
- java 简易计算器代码
- java简易计算器
- java实现简易计算器
- java简易计算器
- java简易计算器
- java实现简易计算器
- 简易计算器(Java)
- Java简易计算器
- java web简易计算器
- 简易计算器Java
- owncloud 私有云搭建
- CentOS7 安装Python3
- 蓝桥杯 Log大侠 题解
- 计算几何基础NYOJ——67三角形面积
- jsp本地打开
- 简易计算器---JAVA
- yiishizhan
- 5、Set数据类型
- System Verilog视频学习笔记(5)- Concurrency
- atom安装markdown-preview-enhanced和markdown-pdf插件
- 继续聊WPF——如何获取ListView中选中的项
- VS自带程序打包部署发布
- ButterKnife 8.0.1 @BindView 失败,nullpointerexception
- Windows使用Xshell访问虚拟机的Ubuntu