qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Java 圖像處理小軟件(界面+圖像處理)

          一、界面學習
            用java實現一個簡易計算器(代碼)如下:
          1 /*CJSCalculator.java 2014.8.4 by cjs
          2  *當點擊含有加號的按鈕時,則第一排第二個按鈕的文本變為加號;
          3  *當點擊“OK”按鈕時,將算出12+2的結果并在第一排最后一個按鈕顯示;
          4  *減號,乘號,除號的功能類似。其中,數字可以自己輸入,也可以固定不變。
          5  *以上是簡單的版本,如果有能力可以設計出更好更完善的計算器。
          6 **/
          7
          8 import java.awt.*;
          9 import javax.swing.*;
          10 import java.awt.event.*;
          11 public class CjsCalculator extends JFrame implements ActionListener {
          12     /* 繼承Jframe 實現 ActionListener 接口*/
          13
          14         //協助關閉窗口
          15         private class WindowCloser extends WindowAdapter {
          16         public void windowClosing(WindowEvent we) {
          17             System.exit(0);
          18         }
          19     }
          20     //strings for operator buttons.
          21
          22     private String[] str = { "+", "-", "*", "/", "OK"};
          23
          24     //build buttons.
          25
          26     JButton[] Obuttons = new JButton[str.length];
          27         //reset button
          28     JButton Rbutton = new JButton("reset");
          29
          30         //build textfield to show num and result
          31
          32     private JTextField display = new JTextField("0");
          33     private JTextField Fnum = new JTextField("");
          34     private JTextField Snum = new JTextField("");
          35     private JTextField Otext = new JTextField("");
          36     private JTextField Deng = new JTextField("=");
          37
          38     int i = 0;
          39
          40     //構造函數定義界面
          41     public CjsCalculator() {
          42
          43         Deng.setEditable(false);
          44         display.setEditable(false);
          45     Otext.setEditable(false);
          46     //super 父類
          47     //    super("Calculator");
          48
          49         //panel 面板容器
          50         JPanel panel1 = new JPanel(new GridLayout(1,5));
          51         for (i = 0; i < str.length; i++) {
          52             Obuttons[i] = new JButton(str[i]);
          53                 Obuttons[i].setBackground(Color.YELLOW);
          54             panel1.add(Obuttons[i]);
          55         }
          56
          57         JPanel panel2 = new JPanel(new GridLayout(1,5));
          58         panel2.add(Fnum);
          59         panel2.add(Otext);
          60         panel2.add(Snum);
          61         panel2.add(Deng);
          62         panel2.add(display);
          63
          64         JPanel panel3 = new JPanel(new GridLayout(1,1));
          65         panel3.add(Rbutton);
          66                 //初始化容器
          67         getContentPane().setLayout(new BorderLayout());
          68         getContentPane().add("North",panel2);
          69         getContentPane().add("Center",panel1);
          70         getContentPane().add("South",panel3);
          71         //Add listener for Obuttons.
          72         for (i = 0; i < str.length; i++)
          73             Obuttons[i].addActionListener(this);
          74
          75         display.addActionListener(this);
          76             Rbutton.addActionListener(this);
          77         setSize(8000,8000);//don't use ???
          78
          79         setVisible(true);//???
          80                 //不可改變大小
          81                 setResizable(false);
          82         //初始化容器
          83         pack();
          84     }
          85
          86         //實現監聽器的performed函數
          87     public void actionPerformed(ActionEvent e) {
          88                 Object happen = e.getSource();
          89         //
          90         String label = e.getActionCommand();
          91
          92         if ("+-*/".indexOf(label) >= 0)
          93             getOperator(label);
          94         else if (label == "OK")
          95             getEnd(label);
          96         else if ("reset".indexOf(label) >= 0)
          97              // display.setText("reset");
          98                       resetAll(label);
          99     }
          00         public void resetAll(String key) {
          101             Fnum.setText("");
          102         Snum.setText("");
          103         display.setText("");
          104         Otext.setText("");
          105     }
          106     public void getOperator(String key) {
          107         Otext.setText(key);
          108     }
          109
          110     public void getEnd(String label) {
          111                 if( (countDot(Fnum.getText()) > 1) || (countDot(Snum.getText())>1) || (Fnum.getText().length()==0) ||
          (Snum.getText().length() == 0)) {
          112                     display.setText("error");
          113                 }
          114         else if(checkNum(Fnum.getText())==false || checkNum(Snum.getText())==false){
          115                 display.setText("error");
          116              }
          117         else {
          118                 double Fnumber = Double.parseDouble(Fnum.getText().trim());
          119             double Snumber = Double.parseDouble(Snum.getText().trim());
          120             if (Fnum.getText() != "" && Snum.getText() != "") {
          121                    if (Otext.getText().indexOf("+") >= 0) {
          122                     double CjsEnd = Fnumber + Snumber;
          123                     display.setText(String.valueOf(CjsEnd));
          124                 }
          125                                 else if (Otext.getText().indexOf("-")>=0) {
          126                                        double CjsEnd = Fnumber - Snumber;
          127                                         display.setText(String.valueOf(CjsEnd));
          128                                 }
          129                         else if (Otext.getText().indexOf("*")>=0) {
          130                                         double CjsEnd = Fnumber * Snumber;
          131                                            display.setText(String.valueOf(CjsEnd));
          132                                 }
          133                                 else if (Otext.getText().indexOf("/")>=0) {
          134                                         double CjsEnd = Fnumber / Snumber;
          135                                         display.setText(String.valueOf(CjsEnd));
          136                                 }
          137                 else
          138                     display.setText("error");
          139
          140             }
          141             else
          142                 display.setText("num is null");
          143                 }
          144
          145     }
          146         public int countDot(String str) {
          147         int count = 0;
          148         for (char c:str.toCharArray()) {
          149             if (c == '.')
          150                 count++;
          151         }
          152         return count;
          153         }
          154         public boolean checkNum(String str) {
          155            boolean tmp = true;
          156         for (char c:str.toCharArray()) {
          157             if (Character.isDigit(c) || (c == '.'));
          158             else {
          159                 tmp = false;
          160                 break;
          161             }
          162         }
          163         return tmp;
          164         }
          165     public static void main(String[] args) {
          166         new CjsCalculator();
          167     }
          168 }
            終端運行該java文件,結果如圖所示:

          posted on 2014-12-08 21:54 順其自然EVO 閱讀(272) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 高台县| 新安县| 当阳市| 佛坪县| 南川市| 德兴市| 德令哈市| 龙南县| 富顺县| 克拉玛依市| 娄底市| 沾化县| 修武县| 田林县| 海晏县| 贺兰县| 咸阳市| 郴州市| 武陟县| 洞头县| 阜新市| 姜堰市| 竹北市| 前郭尔| 德江县| 法库县| 翁源县| 五常市| 延川县| 梨树县| 淅川县| 吴旗县| 房产| 新昌县| 榕江县| 沁源县| 盘锦市| 中阳县| 本溪市| 安平县| 化德县|