Java的事件处理机制之计算器实例

来源:互联网 发布:河北中标数据网 编辑:程序博客网 时间:2024/06/05 00:44

CalcFrame.java

package jsj.java.exam.test10;import java.awt.Dimension;import java.awt.Font;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JComponent;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;//知识要求:理解 应用/** * 计算器窗体类 * 分值 10分 */public class CalcFrame extends JFrame {public static final int WIDTH = 600;public static final int HEIGHT = 100;private JTextField firstNumber;private JTextField secondNumber;private JTextField result;private JComboBox operator;/** * 完成计算器界面的设计 */public CalcFrame() {this.setTitle("小小计算器");// 直接调用从父类继承下来的方法,设置窗口的标题Toolkit toolkit = Toolkit.getDefaultToolkit();// 得到本机默认的工具包Dimension d = toolkit.getScreenSize();// 获取屏幕的尺寸this.setSize(WIDTH, HEIGHT);// 设置容器的宽度和高度this.setLocation((d.width - WIDTH) / 2, (d.height - HEIGHT) / 2);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置关闭按钮时退出程序JLabel prompt = new JLabel("考考你");// 创建标签setCharacter(prompt);JPanel centerPanel = new JPanel();// 创建子容器,默认的布局为FlowLayoutfirstNumber = new JTextField(10);setCharacter(firstNumber);String[] op = { "+", "-", "*", "/" };operator = new JComboBox(op);// 初始化下拉列表setCharacter(operator);secondNumber = new JTextField(10);setCharacter(secondNumber);//创建等号按钮JButton equal = new JButton(" = ");setCharacter(equal);//TODO监听等号按钮上的事件,当用户按下此按钮时,进行相应的+-*/处理//可以采用内部类或者匿名内部类的形式实现,可以调用下面的compute()方法equal.addActionListener(new ActionListener() {//--4@Overridepublic void actionPerformed(ActionEvent e) {//--2compute();//--2}});result = new JTextField(15);// 存放结果的文本框setCharacter(result);centerPanel.add(firstNumber);centerPanel.add(operator);centerPanel.add(secondNumber);centerPanel.add(equal);centerPanel.add(result);this.add(prompt, "North");// this.add(prompt,BorderLayout.NORTH);这种方式也可以this.add(centerPanel);// 默认添加到中央区域this.pack();// 紧凑排列组件//TODO 设置窗体的可见性this.setVisible(true);//--2}    public void setCharacter(JComponent c) {c.setFont(new Font("黑体", Font.BOLD, 20));}/** * 进行运算的方法 */private void compute() {String first = firstNumber.getText();String second = secondNumber.getText();int firstNum = Integer.parseInt(first);int secondNum = Integer.parseInt(second);char op = ((String) (operator.getSelectedItem())).charAt(0);CalcBiz calcBiz = new CalcBiz ();String results = calcBiz.calculate(firstNum, secondNum, op);result.setText(results);}public static void main(String[] args) {CalcFrame calcFrame=new CalcFrame();}}

CalcBiz.java

package bzu.java.exam.test10;/** * 计算器的功能。  */public class CalcBiz {public String calculate(int firstNumber,int secondNumber,char op){String result=" ";switch(op){case '+':result=result+(firstNumber+secondNumber);break;case '-':result=result+(firstNumber-secondNumber);break;case '*':result=result+(firstNumber*secondNumber);break;case '/':if(secondNumber!=0)       result=result+(firstNumber/secondNumber);         else           result=result+"除数不能为0";}return result;}}


原创粉丝点击