目次> 第19章> 19.4 TOPUPPREVNEXT

19.4 ボタンへのアクションリスナの付加

変数の型をきめ、アクションリスナの取り付け方をきめました。 ここまででプログラムの構造が決まりました。

CalcV9a.java

CalcV9p.java との相違点(行番号が赤字の部分を追加)

001:import java.awt.* ;
002:import java.awt.event.* ;
003:import javax.swing.* ;
004:
005:public class CalcV9a extends JFrame {
006:
007:    static JLabel      disp = new JLabel(" ", SwingConstants.RIGHT);   // 結果表示領域
008:    static final Color COLOR = new Color(224,255,255);                 // ボタンの色 light cyan
009:    static final Font  FONT  = new Font("DialogInput", Font.BOLD, 16); // ボタンのフォント
010:    static long        in;             // 入力中の数値
011:    static long        reg = 0L;       // 計算結果
012:    static String      op;             // 直前の演算子
013:    static int         state = 3;      // 1: 最初の数値を入力中。inを表示中。
014:                                       // 2: 演算子の入力直後。regを表示中。
015:                                       // 3: 2番目以降の数字を入力中。inを表示中。
016:                                       // 4: = の入力直後。regを表示中。
017:    static final String PLUS = "+";
018:    static final String MINUS = "−";
019:    static final String MILTI = "×";
020:    static final String DIVIDE = "÷";
021:
022:    public CalcV9a() {
023:        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
024:        Container cont = getContentPane();
025:        cont.setLayout(new BorderLayout());
026:
027:        JPanel keypan = new JPanel(new GridLayout(0,4));
028:
029:        String[] buttonface = { "Tax", "BS",  "CE", "AC",     // ボタンの表示
030:                                "7",   "8",   "9",  DIVIDE,
031:                                "4",   "5",   "6",  MILTI,
032:                                "1",   "2",   "3",  MINUS,
033:                                "0",   "+/-", "=", PLUS };
034:        ActionListener[] actionlistener =                     // ボタンのアクションリスナ
035:                   { new ktax(),   new kbs(),    new kce(),    new kac(),
036:                     new kdigit(), new kdigit(), new kdigit(), new kop(),
037:                     new kdigit(), new kdigit(), new kdigit(), new kop(),
038:                     new kdigit(), new kdigit(), new kdigit(), new kop(),
039:                     new kdigit(), new kpm(),    new keq(),    new kop() };
040:
041:        JButton bn;
042:
043:        for(int i=0; i<buttonface.length; i++) {
044:            bn = new JButton( buttonface[i] );
045:            bn.setBackground(COLOR);
046:            bn.setFont(FONT);
047:            bn.addActionListener(actionlistener[i]);
048:            bn.setFocusPainted(false);
049:            keypan.add( bn );
050:        }
051:
052:        disp.setBackground(Color.WHITE);
053:        disp.setOpaque(true);
054:        disp.setFont(new Font("DialogInput", Font.BOLD, 24));
055:        cont.add(disp,   BorderLayout.NORTH);
056:        cont.add(keypan, BorderLayout.CENTER);
057:
058:        pack();
059:        setVisible(true);
060:    }
061:
062:    class kdigit implements ActionListener {
063:        public void actionPerformed(ActionEvent e) {
064:        }
065:    }
066:
067:    class kop implements ActionListener {
068:        public void actionPerformed(ActionEvent e) {
069:        }
070:    }
071:
072:    class ktax implements ActionListener {
073:        public void actionPerformed(ActionEvent e) {
074:        }
075:    }
076:
077:    class kbs implements ActionListener {
078:        public void actionPerformed(ActionEvent e) {
079:        }
080:    }
081:
082:    class kce implements ActionListener {
083:        public void actionPerformed(ActionEvent e) {
084:        }
085:    }
086:
087:    class kac implements ActionListener {
088:        public void actionPerformed(ActionEvent e) {
089:        }
090:    }
091:
092:    class kpm implements ActionListener {
093:        public void actionPerformed(ActionEvent e) {
094:        }
095:    }
096:
097:    class keq implements ActionListener {
098:        public void actionPerformed(ActionEvent e) {
099:        }
100:    }
101:
102:    public static void main(String arg[]) {
103:        new CalcV9a();
104:    }
105:
106:}

更新日:2013/12/09 TOPUPPREVNEXT