簡易関数電卓JsCalcをGUI化してみました。(^_^;
SwingでGUI化して、ArrayListで入力にヒストリー機能を付けてみました。(^_^;
ちなみに、コンパイルするときは、JsCalc.javaを同じディレクトリに置く必要があります。
● JsCalcW.java
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class JsCalcW { // JsCalcW.java [java] // main関数 public static void main(final String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { AppFrame(); } }); } private static void AppFrame() { JsCalc.defUserFunc(); // ユーザー定義関数の設定 // フレームの作成 JFrame frame = new JFrame("JsCalcW"); // JFrameオブジェクトを生成 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // ウィンドウを閉じるとプログラムが終了 MyPanel h = new MyPanel(); frame.add(h, BorderLayout.CENTER); // フレームにオブジェクトを置く //frame.setSize(new Dimension(360,90)); // 窓サイズ横,縦 frame.pack(); // フレームを必要最小の大きさにする frame.setVisible(true); // フレームを表示する } } class MyPanel extends JPanel implements ActionListener, KeyListener { // JPanelを継承 JButton btn1,btn2; JTextField txt1,txt2; ArrayList<String> sHis = new ArrayList<String>(); int iCnt = 0; public MyPanel() { setBackground(SystemColor.control); // 背景を灰色にする txt1 = new JTextField(25); // txtの設定 txt1.addActionListener(this); txt1.addKeyListener(this); txt1.setFont(new Font("SansSerif",Font.PLAIN,16)); btn1 = new JButton("="); btn1.addActionListener(this); txt2 = new JTextField(25); // txtの設定 txt2.setFont(new Font("SansSerif",Font.ITALIC,16)); btn2 = new JButton("C"); btn2.addActionListener(this); JPanel pa = new JPanel(); pa.setLayout(new GridLayout(2,1,2,2)); pa.add(txt1); pa.add(txt2); JPanel pb = new JPanel(); pb.setLayout(new GridLayout(2,1,2,2)); pb.add(btn1); pb.add(btn2); setLayout(new BorderLayout(2,2)); add(pa, BorderLayout.CENTER); add(pb, BorderLayout.EAST); sHis.add(""); iCnt = sHis.size()-1; } public void actionPerformed(ActionEvent e) { // ボタンクリック if(e.getSource()==btn1||e.getSource()==txt1) { String s = txt1.getText(); sHis.add(s); iCnt = sHis.size()-1; txt2.setText(" "+JsCalc.sEval(s)); txt1.requestFocus(); } else if(e.getSource()==btn2) { txt1.setText(""); txt2.setText(""); txt1.requestFocus(); } } public void keyPressed(KeyEvent e){ int k = e.getKeyCode(); if(k == KeyEvent.VK_DOWN) { iCnt++; if(iCnt> sHis.size()) iCnt = sHis.size(); txt2.setText(""); txt1.setText(sHis.get(iCnt % sHis.size())); } else if(k == KeyEvent.VK_UP ) { iCnt--; if(iCnt< 1) iCnt = 1; txt2.setText(""); txt1.setText(sHis.get(iCnt % sHis.size())); } } public void keyReleased(KeyEvent e){ } public void keyTyped(KeyEvent e){ } }
●使用法
①数式を入力して、[=]ボタンまたは、[Enter]キーで計算実行。
②[C]ボタンまたは、[↓]矢印キーで画面消去。
③[↑]矢印キーと[↓]矢印キーで入力履歴を表示。
※参考URL
●実行可能JARの作り方と実行の仕方 | システム開発ブログ ...
●簡易関数電卓JsCalc - Java
●簡易関数電卓JsCalcをGUI化してみた。JsCalcW - Java (2)
●簡易関数電卓JsCalcをGUI化してみた。JsCalcW - Java (3)
●簡易関数電卓JsCalcWを改良してみた。
●簡易関数電卓JsCalcWを改良してみた。(2)
- 作者: 立木秀樹,有賀妙子
- 出版社/メーカー: 共立出版
- 発売日: 2007/09/22
- メディア: 単行本
- 購入: 1人 クリック: 2回
- この商品を含むブログを見る
- 作者: 古金谷博,藤尾聡子,鳥居隆司
- 出版社/メーカー: 日経BP社
- 発売日: 2009/12/03
- メディア: 単行本
- 購入: 1人 クリック: 11回
- この商品を含むブログ (1件) を見る