next up previous contents index
Next: N-queens Problem Up: Examples Previous: Drawing Binary Trees

Building a Calculator

Now, let us consider how to build the calculator depicted in Figure 5.2. This example illustrates how to use the grid constraint.

  
Figure 5.2:  A Calculator.

The calculator is composed of a display and a board with many buttons. The display is simply a text field which is already available as a base class. Therefore, we only need to get the Board class ready to build a calculator.

The following shows the class for building the board:

       Class Board {
             component Button b[9]; // Buttons "0",...,"9"
             component	Button bc {text == "C"};
             ... // Buttons "+","-","*","/",".","="

             for (i in 0..9) b[i].text == String(i);
             grid({{bc,bdiv,bmul,bsub},
                  {b[7],b[8],  b[9],  badd},
                  {b[4],b[5],  b[6],  badd},
                  {b[1],b[2],  b[3],  beq },
                  {b[0],b[0],  bpoint,beq}});
       }
The for statement constrains the values for the text attributes of the digit buttons. The expression String(i) translates an integer i into a string. The grid constraint constrains the positions for the buttons. Notice that a component may spread over several grids.

As the current version of DJ does not support the description of event handlers, it is not easy to build a working calculator now. To do so, we need to modify the translated Java program and add event handling methods.



Neng-Fa ZHOU
Sat Apr 18 16:14:29 JST 1998