java GUI计算器
2016-06-16 21:29
567 查看
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class jisuanqi extends JFrame implements ActionListener{ private JTextField jtf1; private JButton btn[]; private String s1=""; private int n=0; private int[] fh=new int[10];String[] sr;double sum; JPanel p1=new JPanel(), p2=new JPanel(); public jisuanqi(){ String str[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"}; btn=new JButton[str.length]; //创建按钮数组 for(int i=0;i<str.length;i++){ btn[i]=new JButton(str[i]); p2.add(btn[i]); btn[i].addActionListener(this); } setTitle("计算器"); JLabel a=new JLabel(); JLabel b=new JLabel(); JLabel c=new JLabel(); JLabel d=new JLabel(); p1.setLayout(new BorderLayout(15,15)); p1.add(jtf1=new JTextField("0",20),BorderLayout.CENTER); jtf1.setHorizontalAlignment(JTextField.RIGHT); //右对齐 p1.add(a,BorderLayout.PAGE_START); p1.add(b,BorderLayout.LINE_START); p1.add(c,BorderLayout.LINE_END); p1.add(d,BorderLayout.PAGE_END); jtf1.setEditable(false); //文本框不可编辑 p2.setLayout(new GridLayout(4,4,2,2)); setLayout(new BorderLayout(2,2)); add(p1,BorderLayout.NORTH); add(p2,BorderLayout.CENTER); pack(); setVisible(true); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e){ String cmd=e.getActionCommand(); if(cmd.equals("1")){ s1+='1';jtf1.setText(s1); } else if(cmd.equals("2")){ s1+='2';jtf1.setText(s1); } else if(cmd.equals("3")){ s1+='3';jtf1.setText(s1); } else if(cmd.equals("4")){ s1+='4';jtf1.setText(s1); } else if(cmd.equals("5")){ s1+='5';jtf1.setText(s1); } else if(cmd.equals("6")){ s1+='6';jtf1.setText(s1); } else if(cmd.equals("7")){ s1+='7';jtf1.setText(s1); } else if(cmd.equals("8")){ s1+='8';jtf1.setText(s1); } else if(cmd.equals("9")){ s1+='9';jtf1.setText(s1); } else if(cmd.equals("0")){ s1+='0';jtf1.setText(s1); } else if(cmd.equals(".")){ //防止误输入 if(s1==""){s1="0.";jtf1.setText(s1);} else{s1+='.';jtf1.setText(s1);} } else if(cmd.equals("+")){ s1+='+';jtf1.setText(s1); fh[n++]=1; } else if(cmd.equals("-")){ s1+='-';jtf1.setText(s1); fh[n++]=2; } else if(cmd.equals("*")){ s1+='*';jtf1.setText(s1); fh[n++]=3; } else if(cmd.equals("/")){ s1+='/';jtf1.setText(s1); fh[n++]=4; } else if(cmd.equals("=")){ sr=s1.split("\\+|\\*|\\-|\\/"); //sr=s1.split("[*/+-]");//注意-在[]中代表范围,应放在两端,避免把小数点也隔离 sum=Double.parseDouble(sr[0]); for(int i=1;i<sr.length;i++){ if(fh[i-1]==1) sum+=Double.parseDouble(sr[i]); else if(fh[i-1]==2) sum-=Double.parseDouble(sr[i]); else if(fh[i-1]==3) sum*=Double.parseDouble(sr[i]); else if(fh[i-1]==4){ if(sr[i].equals("0")){jtf1.setText("除数不能为0");n=0;s1="";return;} // sum/=Double.parseDouble(sr[i]); } } jtf1.setText(Double.toString(sum)); n=0; s1=""; } } public static void main(String[] args){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ new jisuanqi(); } }); } }
相关文章推荐
- EasyUI 小记(一)
- NSOprationQueue 与 GCD 的区别与选用
- Longest Increasing Subsequence
- 问题解决: No module named requests, __init__.py:166: UserWarning: No parser was explicitly specified
- View focusableInTouchMode=true导致第一次点击不响应
- UGUI的事件机制
- 学习duilib
- UE4 Unreal 界面 主题 Slate 更改
- uitextfiled uitextview过滤emoji符号 ios
- The project was not built since its build path is incomplete
- jd-gui打开jar包后显示空白
- SUID-SGID-SBIT
- xcodebuild命令编译Cordova iOS项目报错解决
- java.sql.SQLException: No suitable driver 问题解决
- EasyUI 实现编辑功能,给Combobox 赋值
- Mysql 插入大数据量数据报错:Lost connection to MySQL server during query
- About the issue of After delete a record from grid and refresh the datasource, the cursor go to first top record.
- 转载:AbstractQueuedSynchronizer的介绍和原理分析
- iOS开发UI篇—CAlayer(自定义layer)
- iOS开发UI篇—CAlayer层的属性