可視化シンプルな電卓の.java

JavaのAWTとSWINGパッケージを使用して視覚的なインターフェースを行います。

まずは、簡単にこの2つのパッケージを見てみましょう:

JavaでAWTやSwingは視覚的なインターフェースを作るために使用されています。AWT(なAbstract Window Toolkitの):抽象ウィンドウツールキット、早期の書き込みGUIアプリケーションを含みます。スイング:既存の問題AWT新たに開発されたグラフィカル・インターフェース・パッケージを解決するために。スイングAWTが向上し、拡張されます。

 

原則

AWT:UnixシステムでX Windowのスタイルである一方、Windowsシステムは、WindowsのAWTウィンドウスタイルですので、ネイティブの方法によって達成されることは、オペレーティングシステムを呼び出します。オペレーティングシステムが提供するAWTのグラフィックス機能とグラフィックス機能との1対1の関係を持って、我々はピアと呼んでいます。私たちは、グラフィカル・ユーザ・インタフェースにAWTコンポーネントを使用するときに、他の言葉では、我々は、ライブラリ、オペレーティングシステムが提供している使用グラフィックスで実際にあります。オペレーティングシステムのグラフィックスライブラリの異なる機能には、別のプラットフォーム上に存在しない可能性がありますプラットフォームの機能上に存在し、同じではありません提供。Java言語によって主張「一度コンパイルどこでも実行」のコンセプトを実現するためには、AWTは、そのプラットフォームに依存しない機能を犠牲にして達成する必要があり、それは、汎用オペレーティングシステムが提供する様々な方法で提供さAWTのグラフィックス機能であります交差点のグラフィックス機能。AWTは、その機能を達成するために地元の方法に依存しているので、我々は通常、ヘビー級AWTコントロールのコントロールと呼ばれます。 
スイング:軽量コンポーネントは、呼び出されたネイティブメソッドによって達成されていないので、ウィンドウスタイルがより多様であるスイング。しかし、スイングとheaveyweightコンポーネントがありました。たとえばJWindowは、ダイアログ、JFrameのため。純粋なJavaで書かれたスイング、良いポータビリティ、異なるプラットフォーム上で同じように見えます。したがって、JAVAのスイングはウィンドウクラスは、クロスプラットフォームになることができないので、窓関数は、クロスプラットフォームおよびスケーラビリティの特徴であるように、問題を解決する、とSwing Swingコンポーネント(スイングは、純粋なJavaコードで書かれている、と呼ばれるので、軽量コンポーネントあまりにも多くのシステムリソース、いわゆる軽量コンポーネントを占有する必要はありません!)

違い:

  1. AWTは速く走るローカルプログラムに基づいて、C / C ++の方法で、実行速度が遅いスイングAWTのJavaプログラムに基づいています。
  2. AWTコントロールは、異なるプラットフォーム上で動作が異なる、とSwingのパフォーマンスは、すべてのプラットフォーム間で一貫しています。

どのように選択するには:

実際には、あなたが使用する必要があり、プラットフォームのAWTやSwingアプリケーションの展開の種類によって異なります。例えば:

  1. 組み込みアプリケーションの場合は、ターゲットプラットフォームのハードウェアリソースは、しばしば非常に制限され、アプリケーションの速度がプロジェクトの重要な要因です。この矛盾した状況で、シンプルかつ効率的なAWTは確かに埋め込まれたJavaの最初の選択肢になります。
  2. 一般的な、標準ベースのJavaアプリケーションのPCまたはワークステーションの重要な要因は、アプリケーションのハードウェアリソースの制限は、多くの場合、プロジェクトによって引き起こされていません。そのため、Javaの標準バージョンでは、スイングの利用を推進し、その速度を犠牲にしてアプリケーションの機能を実現するために、です。

私たちはメインコースに始まっこの2つのパッケージを理解した後、我々は簡単な電卓を達成するために、今日の書き込み:

  1  インポート持つjava.awt。* ;
  2  インポートjava.awt.event.ActionEvent。
  3  輸入java.awt.event.ActionListener。
  4  インポートjava.util.Stackを。
  5  インポートjavax.swing.JApplet。
  6  インポートjavax.swing.JButtonの。
  7  インポートjavax.swing.JFrame。
  8  インポートjavax.swing.JPanel。
  9  インポートjavax.swing.JTextField。
10   クラス延び JAppletのが実装のActionListener {
 11は      民間=テキストフィールドのJTextField 新しい新規のJTextField(12は、 "入力" )、
 12は       文字列演算子= "";       // 演算子
13である       文字列入力= "";         // 式入力
14       ブールフラグに= trueに15  
16       公共 ボイドのinit()      // 内部オーバーライドinitメソッドアプレット
17。      {
 18で           textField.setFont(新しい新しいフォント( "ゴシック" Font.PLAIN、50)); //は、フォント形式を設定
。19           (textField.setEditable はfalse);            // 設定テキストボックスはありません変更
20          容器C = getContentPane()。
21           のJButton B [] = 新しい JButtonの[17 ]。
22           JPanelのパネル= 新しいJPanelの()。
23           JPanelのパネル1 = 新しいJPanelの()。
24           panel1.add(テキストフィールド)。
25           panel.setLayout(新しいグリッドレイアウト(4、4、5、5 ))。
26           panel1.setLayout(新しい FlowLayoutの(3 ))。
27           C.add(パネル、BorderLayout.CENTER)。
28           C.add(パネル1、BorderLayout.NORTH)。
29          ストリング名[] = { "7"、 "8"、 "9"、 "+"、 "4"、 "5"、 "6"、 " - "、 "1"、 "2"、 "3"、 ""、 "*"、 "0"、 "="、 "/"、 "C"}。// 设置按钮
30           のためのint型 i = 0; iは17 <; iは++)// 添加按钮
31           {
 32               B [i]は= 新しいJButtonの(名前[I])。
33件の               B [i]は.setBackground(新しいカラー(192、192、192 ));
34件の               B [i]は.setForeground(Color.BLACK)。  
              
              B [I] .setFont(新新フォント、( "ゴシック" Font.PLAIN、16)); // フォントの設定書式
38がされて               (B [I])panel.add; // キーインターフェースに追加
39               B [I] .addActionListener(この);
 40           }
 41である           panel1.add(B [16 ]);
 42である           [16] .setPreferredSize(B 新しい新しいディメンション(65、65 ));
 43である 
44である 
45           B [13である] .setForeground(Color.RED) 、
 46である      }
 47  
48       公共の ボイドのactionPerformed(のActionEvent E){
 49          INT CNT = 0 ;
 50           列、アクションコマンドは、= e.getActionCommand();
 51である          IF(actionCommand.equals( "+")|| actionCommand.equals( " - ")|| actionCommand.equals( "*")||アクションコマンド。等号( "/" ))
 52は               、入力= + "" +アクションコマンド+ ""; // 入力、所望の形状への入力パターンセット
53は           IF(actionCommand.equals( "C" ))
 54が               入力= " " ;
 55           他の IF(actionCommand.equals(" = ")) // 等号を聞く場合、プロセス入力
56は          、{
 57は               INPUT = + "=" +計算(INPUT);
 58               textField.setText(INPUT);
 59               INPUT = "" ;
 60               CNT = 1 ;
 61である           } 
62である               ; INPUT + =アクションコマンドは// 不要なスペースを回避するために、複数桁の数字の数
63である          IF( == 0 CNT 64               textField.setText(INPUT);
 65       }
 66  
67       / * データ・スタックを計算するために使用される* / 
68       プライベート文字計算(列入力)//
 69       {
 70           列STR [];
 71であります          STR = input.split(」 " )。
72           スタック<ダブル> S = 新しいスタック<ダブル> ();
73           ダブル M = Double.parseDouble(STR [0 ])。
74           s.push(M)。
75           のためには、int型 i = 1; iが<str.length; iが++ ){
 76               であれば(I%2 == 1 ){
 77                   であれば(STR [I] .compareTo( "+")== 0 ){
 78                       二重ヘルプ= Double.parseDouble(STR [I + 1 ])。
79                       s.push(ヘルプ);
80                   }
 81                   もし(STR [I] .compareTo( " - ")== 0 ){
 82                       二重ヘルプ= Double.parseDouble(STR [I + 1 ])。
83                       s.push( - ヘルプ);
84                   }
 85                   であれば(STR [I] .compareTo( "*")== 0 ){
 86                       二重ヘルプ= Double.parseDouble(STR [I + 1 ])。
87                       二重 ANS = s.peek()。// 取出栈顶元素
88                       s.pop(); // 消栈
89の                       ANS * = ヘルプ。
90                       s.push(ANS)。
91                   }
92                   であれば(STR [I] .compareTo( "/")== 0 ){
 93                       二重ヘルプ= Double.parseDouble(STR [I + 1 ])。
94                       二重 ANS = s.peek()。
95                       s.pop()。
96の                       ANS / = 助け。
97                       s.push(ANS)。
98                   }
 99               }
 100           }
 101の          ダブル ANS = 0D。
102           ながら(!{s.isEmpty())
 103の               ANS + = s.peek()。
104              s.pop();
105           }
 106           文字結果= String.valueOf(ANS)。
107           リターン結果;
108       }
 109  
110       公共 静的 ボイドメイン(文字列引数[]){
 111           JFrameのフレーム= 新しい JFrameの( "カウンタ")。// 创建顶级窗口
112           frame.setResizable();
113           メインアプレット= 新しいメイン();
114           frame.getContentPane()(アプレット、BorderLayout.CENTER)を加えます。
115           applet.init()。     // アプレットのinitメソッド
1 16           applet.start();     // スレッドが開始
117           frame.setSize(400、450);   // ウィンドウサイズ設定
1 18           (frame.setVisible trueにする);     // 可視ウィンドウを設定し
119       }
 120   }

 

おすすめ

転載: www.cnblogs.com/hetaoyuan/p/11105538.html
おすすめ