パネルとグリッド レイアウトを使用し、テキスト ボックス、10 個の数字ボタン (0 ~ 9)、4 つの加算、減算、乗算、除算ボタン、等号ボタン、クリア ボタン、四角形を追加して、電卓をシミュレートするアプリケーションを作成します。ルート ボタン (バックスペース ボタン) では、テキスト ボックスに計算式と結果を表示する必要があり、その効果は次の図のようになります。
Java の単純な電卓コード:
インポート javax.swing.*; インポート java.awt.*; インポート java.awt.Color; ActionListener { private JPanel p1 = new JPanel() // パネルを作成 private JPanel p2 = new JPanel(); t1; //テキストボックス 1 は入力情報の表示に使用されます private JTextField t2; //テキストボックス 2 は結果の情報の表示に使用されます private JLabel label //表示画面に表示される文字列,y ; //x と y は両方ともオペランドです int z; //Z はクリックされた演算子を表します。0 は「+」を表し、2 は「*」を表し、3 は「/」を表します。 ] = 新しいJButton[12]; //12 個のボタンを含む配列を作成します private JButton b1,b2,b3,b4,b5,b6,b7,b8; //算術関数ボタン public Ex5_2() { super("Simple Calculator" ); /ウィンドウ名 Container c = getContentPane(); //コンテンツパネルオブジェクトを作成 t1 = new JTextField(30); t1.setEditable(false); //表示のみ可能、編集不可 t2 = new JTextField(30); t2.setEditable(false); //表示のみ可能、編集不可Xiaowu Edition Calculator ^_^o~ 頑張ってください! "); label.setForeground(Color.blue); //空の文字列バッファを作成します str=new StringBuffer(); p2.add(label); //パネルにラベルを追加します p2.add(t2); //パネルにテキスト ボックスを追加します p2.add(t1) //パネルにテキスト ボックスを追加します p2.setLayout(new GridLayout(4,1); )); //Put パネルレイアウトは 4 行 1 列 for(int i=0;i<10;i++) //ボタン 0 ~ 9 のラベルを配列に設定し、リスナーを登録します { String s=""+ i; b [i]= 新しいJButton(s); b[i].addActionListener(this); } // 各ボタンをインスタンス化します b[10]= new JButton("."); = 新しい JButton("/"); b2= 新しい JButton("戻る"); b4= 新しい JButton("C"); JButton("+"); b6= new JButton("Sqrt"); b7= new JButton("=); // ボタンの前景色を設定します。 ; i<12;i++) { b[i].setForeground(Color.blue) } b1.setForeground(Color.red); b5.setForeground(Color.red); b2.setForeground(Color.blue); b6.setForeground(Color.red); .blue); // パネルに追加 p1.add(b[7]); p1.add(b[9]); p1.add(b2); p1.add(b[5]); 6]); p1.add(b4); p1.add(b[2]); p1.add(b5); p1.add(b[0]); p1.add(b7) ;p1.add(b8); p1.setLayout(new GridLayout(4,5,5,5)); // リスナー b[10].addActionListener(this); b[11].addActionListener(この); b2.addActionListener(この); b5.addActionListener(この); ) ); b7.addActionListener(この); // パネルをコンテンツ パネルに追加します。 c.add(p2); c.add(p1); c.setLayout(new FlowLayout()); // シーケンシャル レイアウトに設定します。 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);ウィンドウを閉じるアクション setVisible(true); //表示されるように設定 setResizable(false) //フレーム サイズの調整を禁止 setSize(400,300); //メインメソッドはウィンドウの作成を実装します public static void main(String[] args) { Ex5_2 f = new Ex5_2() } //ボタンイベント処理 public void actionPerformed(ActionEvent e) { try { if(e.getSource() )==b4) //クリアするには「C」を選択 { t1.setText("0"); //テキスト ボックスをクリアします t1.sethorizontalAlignment(JTextField.RIGHT); //テキストを右に揃えます str.setLength(0) //新しい入力オペランドを受け取る準備をするために文字列バッファをクリアします} else if(e.getSource; ()==b[10])//「+/-」をクリックして、入力オペランドが正の数か負の数かを選択します{ x=Double.parseDouble(t1.getText().trim());//トリム関数は文字列内のスペースを削除します t1.setText(""+(-x)); t1.sethorizontalAlignment(JTextField.RIGHT) ; } else if (e.getSource()==b5)//プラスボタンをクリックして x と z の値を取得し、y の値をクリアします{ x=Double.parseDouble(t1.getText().trim()); y=0d; } else if(e.getSource()==b7)//クリックして縮小しますボタンは x と z の値を取得し、y の値をクリアします。 { x=Double.parseDouble(t1.getText().trim()); str.setLength(0); y=0d; z=1; } else if(e.getSource()==b3)//乗算ボタンをクリックして x と z の値を取得し、y{ x =Double.parseDouble(t1.getText().trim()); y=0d; if(e.getSource()==b1)//分割ボタンをクリックして x と z の値を取得し、y の値をクリアします{ x=Double.parseDouble(t1.getText().trim()); .setLength(0); y=0d; z=3; } else if(e.getSource()==b8)// 等号ボタンをクリックして計算結果を出力します。 switch(z) { ケース 0: t1.setText(""+(x+y)); t1.sethorizontalAlignment(JTextField.RIGHT); ケース 1: t1.setText(""+(xy)); sethorizontalAlignment(JTextField.RIGHT);break ケース 2: t1.setText(""+(x*y)); t1.sethorizontalAlignment(JTextField.RIGHT);break; ケース 3: t1.setText(""+(x/y)); ;ブレイク; } } それ以外if(e.getSource()==b[11])//「.」ボタンをクリックして小数点を入力します { if(t1.getText().trim().indexOf('.')!=-1) // 文字列に既に小数点が含まれているかどうかを判断します { } else // 小数点がない場合 { if(t1.getText().trim().equals("0"))// 最初に次のように表示される場合0 { t1.setText(str.append(e.getActionCommand()).toString()); t1.sethorizontalAlignment(JTextField.RIGHT) } else if(t1.getText().trim().equals("")); /最初に空として表示された場合は、何もしません。 {} else { t1.setText(str.append(e.getActionCommand()).toString()); t1.sethorizontalAlignment(JTextField.RIGHT); } } y=0d; } else if(e.getSource()==b6) //平方根を求めます { x=Double.parseDouble(t1.getText().trim()); { t1.setText("数値形式の例外"); t1.sethorizontalAlignment(JTextField.RIGHT); } else { t1.setText(""+Math.sqrt(x)); } .setLength(0); } if(e.getSource()==b[0])//数字キー「0」が選択されている場合 { if(t1.getText().trim().equals("0"))//表示されます 画面表示がゼロの場合、操作は実行されません。 {} else t1.setText(str.append(e.getActionCommand()).toString()); t1.sethorizontalAlignment(JTextField.RIGHT); y=Double.parseDouble(t1.getText().trim()); } else if (e.getSource()==b2) //戻るキーが選択されています { if(! t1.getText().trim().equals("0"))//表示がゼロでない場合{ if(str.length()!=1) { t1.setText(str.delete(str.length()-1,str.length()).toString());//境界外の文字列例外がスローされる可能性があります t1.sethorizontalAlignment(JTextField.RIGHT) ; } else { t1.setText("0"); str.setLength(0); y=Double.parseDouble(t1.getText().trim()); } else { t1.setText(str.append(e.getActionCommand()).toString()); ; y=Double.parseDouble(t1.getText().trim()); } } } catch(NumberFormatException e1){ t1.setText("数値形式の例外"); } catch(StringIndexOutOfBoundsException) e1){t1.setText("文字列インデックスが範囲外です"); t1.sethorizontalAlignment(JTextField.RIGHT);} } }操作のレンダリング:
これで、単純な Java 電卓のプログラミングが完了しました。この記事が皆さんに電卓を書くきっかけになれば幸いです。これは単なる単純な電卓であり、電卓の機能を改善するために引き続き使用できます。