事件机制的简单介绍
??// 定义一个二维数组
??String[][] arrayItem = { { "标准型","科学型" }, { "复制", "粘贴", "历史记录" },
????{ "查看帮助", "关于计算器" } };
??// 循环便利arrayMenu数组
??for (int i = 0; i < arrayMenu.length; i++) {
???// 创建JMenu对象
???JMenu menu = new JMenu(arrayMenu[i]);
???// 将menu添加到jmb上
???jmb.add(menu);
???// 循环便利arrayItem数组
???for (int j = 0; j < arrayItem[i].length; j++) {
????// 创建JMenuItem对象
????JMenuItem item = new JMenuItem(arrayItem[i][j]);
????// 将item添加到menu上
????menu.add(item);
???}
??}
??return jmb;
??
??// TODO Auto-generated method stub
?
?}
?
?
}
?// 调用创建北边面板的方法
?
?
?
?
package cal4;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JButton;import javax.swing.JTextField;public class ClaculListener implements ActionListener{private double n=0;private float m1=0,m2=0;private int flag=0;private JTextField jte ; public ClaculListener(JTextField t1){this.jte=t1;}public void actionPerformed(ActionEvent e){String[] array ={"0","1","2","3","4","5","6","7","8","9","+","-","*","/","C","="}; String str=""; for(int i=1;i<=9;i++){ // 显示输入的数据的过程及结果 if(e.getActionCommand().equals(array[i])){ n=n*10+i; str=String.valueOf(n); jte.setText(str); jte.getText(); } } for(int i=10;i<=13;i++) if(e.getActionCommand().equals(array[i])){ //依次寻找与所事件匹配的的运算符是那种 m1=Float.parseFloat(jte.getText()); if(flag==10) m2=m1+m2; //如果连续2次或以上点击运算符而没有按“C”或“=”键,则计算//并保存到m2 else if(flag==11) m2=m2-m1; else if(flag==12) m2=m2*m1; else if(flag==13) m2=m2/m1; else m2=m1; // 如果没有连续的运算符运算,就保存当前数据到m2 if(i==10) flag=10; // 记录运算符 else if(i==11) flag=11; else if(i==12) flag=12; else flag=13; str=String.valueOf(m2); jte.setText(str); //显示连续的运算过程 n=0; // n还原0,记录下次输入数据 break; // 如果找到了匹配的运算符并完成运算和记录就退出寻找过程 } if(e.getActionCommand().equals(array[15])){ //如果事件是"=" m1=Float.parseFloat(jte.getText()); if(flag==10) m2=m1+m2; //判断运算符,并作计算,显示运算结果 else if(flag==11) m2=m2-m1; else if(flag==12) m2=m2*m1; else if(flag==13) m2=m2/m1; str=String.valueOf(m2); jte.setText(str); // 显示运算结果 n=0; // n还原0,记录下次输入数据 flag=0; // flag还原0,表明没有未处理的运算符 jte.getText(); } if(e.getActionCommand().equals(array[14])){ //如果事件是"C"即作清楚,各变量还原0 m1=0; m2=0; flag=0; n=0; jte.setText("0"); } } }
?
?<!--EndFragment-->