码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA GUI小实例

时间:2018-12-02 17:33:23      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:event   gui   and   closed   ack   lag   监听   open   ttext   

 前几天刚刚自学完JavaGUI基础知识,就想着做一个简单的计算器。   写代码就是这样,想到了就要去尝试。于是经过了漫长的,,,,代码渐渐完善。但是还是有一两个bug没有完善(智商不够用啊) ,因为输入的情况有点多,连续if嵌套,最后懵了。                  

技术分享图片
  1 package cn.bjxt.test1;
  2 
  3 import java.awt.BorderLayout;
  4 import java.awt.FlowLayout;
  5 import java.awt.GridLayout;
  6 import java.awt.event.ActionEvent;
  7 import java.awt.event.ActionListener;
  8 
  9 import javax.swing.JButton;
 10 import javax.swing.JFrame;
 11 import javax.swing.JPanel;
 12 import javax.swing.JTextField;
 13 
 14 public class test05 extends JFrame{
 15 
 16     private String lastCommand;//保存每次输入的运算符,然后进行判断
 17     private double result;
 18     private boolean start;
 19     private boolean flag;
 20     JTextField jt=null;
 21     JPanel jp=null;
 22      JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jb10,jb11,jb12,jb13,jb14,jb15,jb16,jb17;
 23      public static void main(String[] args) {
 24          new test05();
 25     }
 26      //构建函数
 27      public test05(){
 28          //变量初始化
 29         result=0;
 30          start=true;  
 31         flag=false;
 32         lastCommand="=";
 33          //添加文本框
 34          jt=new JTextField(10);
 35          this.add(jt,BorderLayout.NORTH);
 36          
 37          //设置布局格式
 38          jp=new JPanel();
 39          GridLayout g=new GridLayout(4, 4,3,3);
 40          jp.setLayout(g);
 41          
 42          jb1=new JButton("7");
 43          jb2=new JButton("8");
 44          jb3=new JButton("9");
 45          jb4=new JButton("+");
 46          jb5=new JButton("4");
 47          jb6=new JButton("5");
 48          jb7=new JButton("6");
 49          jb8=new JButton("/");
 50          jb9=new JButton("1");
 51          jb10=new JButton("2");
 52          jb11=new JButton("3");
 53          jb12=new JButton("0");
 54          jb13=new JButton("*");
 55          jb14=new JButton(".");
 56          
 57          jb16=new JButton("-");
 58          //重置
 59          //没有完善,只要稍加改动就行
 60          jb17=new JButton("0.0");
 61          this.add(jb17,BorderLayout.SOUTH);
 62          jb17.addActionListener(new ActionListener() {
 63             
 64             @Override
 65             public void actionPerformed(ActionEvent e) {
 66                 
 67                  start=true;
 68                 
 69                  jt.setText("");
 70                 
 71             }
 72         });
 73          
 74          jb15=new JButton("=");
 75          
 76          jp.add(jb1);
 77          jp.add(jb2);
 78          jp.add(jb3);
 79          jp.add(jb4);
 80          jp.add(jb5);
 81          jp.add(jb6);
 82          jp.add(jb7);
 83          jp.add(jb8);
 84          jp.add(jb9);
 85          jp.add(jb10);
 86          jp.add(jb11);
 87          jp.add(jb12);
 88          jp.add(jb13);
 89          jp.add(jb14);
 90          jp.add(jb15);
 91          jp.add(jb16);
 92          
 93          nActoinListen(jb1);
 94          nActoinListen(jb2);
 95          nActoinListen(jb3);
 96          cActoinListen(jb4);
 97          nActoinListen(jb5);
 98          nActoinListen(jb6);
 99          nActoinListen(jb7);
100          cActoinListen(jb8);
101          nActoinListen(jb9);
102          nActoinListen(jb10);
103          nActoinListen(jb11);
104          nActoinListen(jb12);
105          cActoinListen(jb13);
106          nActoinListen(jb14);
107          cActoinListen(jb16);
108          cActoinListen(jb15);
109         
110         
111          
112          
113          this.add(jp,BorderLayout.CENTER);
114          this.setTitle("简易计算器");
115          this.setSize(300,300);
116          this.setVisible(true);
117          this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
118          
119      }
120    //数字监听器  
121      public void nActoinListen(JButton jb)
122      {
123          jb.addActionListener(new ActionListener() {
124             
125             public void actionPerformed(ActionEvent e) {
126             
127                 String input=jb.getText();
128                 
129                 if(start)
130                 {
131                 if(input.equals("."))
132                 {
133                     jt.setText(".");
134                     return;
135                 }
136                    start=false;
137                 }
138                 
139                 else
140                 {
141                     if(jt.getText().indexOf(".")!=-1)
142                   {
143                           if(input.equals("."))
144                           {
145                               return;
146                           }
147                     }
148                     
149                     if(jt.getText().equals("-"))
150                       {
151                               if(input.equals("."))
152                               {
153                                   return;
154                               }
155                         }
156                     
157                     
158                     if(jt.getText().equals("0"))
159                       {
160                               if(input.equals("."))
161                               {
162                                   return;
163                               }
164                     }                
165                 }
166                 
167             if(flag){//当第二次输入数字时,就清空原先的
168                 jt.setText("");
169                 flag=false;
170             }
171                     
172                 
173                 jt.setText(jt.getText()+input);
174             }
175                     
176         }); 
177      }
178      
179      //运算监听器
180      public void cActoinListen(JButton jb)
181      {
182          jb.addActionListener(new ActionListener() {
183             
184             public void actionPerformed(ActionEvent e) {
185                       String input=jb.getText();
186                       
187                       if(start){//判断首次输入的是不是“-”
188                           if(input.equals("-"))
189                           {
190                               jt.setText("-");
191                               start=false;
192                           }
193                       }
194                       else
195                       {
196                           if(!flag)
197                           {
198                               cal(Double.parseDouble(jt.getText()));
199                           }
200                           lastCommand=input;
201                           flag=true;
202                           start=true;
203                       }
204                      
205             }
206         });
207       }
208      
209      public void cal(double x)
210      {
211       if(lastCommand.equals("+"))
212       {
213           result +=x;
214       }
215       else if(lastCommand.equals("-"))
216       {
217           result -=x;
218       }
219       else if(lastCommand.equals("*"))
220       {
221           result *=x;
222       }
223       else if(lastCommand.equals("/"))
224       {
225           result /=x;
226       }
227       else if(lastCommand.equals("="))
228       {
229          result =x;
230       }
231         jt.setText(""+result); 
232      }
233 }
View Code

技术分享图片

 

就这样吧,以后能力强大了,再完善。

 

JAVA GUI小实例

标签:event   gui   and   closed   ack   lag   监听   open   ttext   

原文地址:https://www.cnblogs.com/yilxq/p/10054045.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!