简易计算器---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
原创粉丝点击