File: calculator.jacl

package info (click to toggle)
libbsf-java 1%3A2.4.0-4
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 2,924 kB
  • ctags: 2,470
  • sloc: java: 5,373; xml: 224; ansic: 182; python: 57; makefile: 16
file content (61 lines) | stat: -rw-r--r-- 1,614 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# A silly little calculator implemented in Jacl using
# Java components for the UI.

package require java

set f [java::new java.awt.Frame "BSH Calculator (jacl/tcl)"]
bsf addEventListener $f "window" "windowClosing" "exit"
set p [java::new java.awt.Panel]

set f1 [java::new java.awt.TextField]
$f1 setColumns 20
bsf addEventListener $f1 "action" "" "doMath"
set f2 [java::new java.awt.TextField]
bsf addEventListener $f2 "text" "" "doMath"

set p [java::new java.awt.Panel]
$p setLayout [java::new java.awt.GridLayout 2 2]
$p add [java::new java.awt.Label "Enter Operand"]
$p add $f1
$p add [java::new java.awt.Label "Enter Operand"]
$p add $f2

$f add "North" $p

$f add "Center" [java::new java.awt.Label "Results:"]

set p [java::new java.awt.Panel]
$p setLayout [java::new java.awt.GridLayout 4 2]
$p add [java::new java.awt.Label "Sum"]
$p add [set sum [java::new java.awt.TextField]]
$sum setColumns 20
$p add [java::new java.awt.Label "Difference"]
$p add [set diff [java::new java.awt.TextField]]
$p add [java::new java.awt.Label "Product"]
$p add [set prod [java::new java.awt.TextField]]
$p add [java::new java.awt.Label "Quotient"]
$p add [set quo [java::new java.awt.TextField]]
$f add "South" $p

$f pack
$f show
$f toFront

proc getField {f} {
  set t [$f getText]
  if {$t == ""} {
    return 0
  } else {
    return [java::call java.lang.Integer parseInt $t]
  }
}

proc doMath {} {
  global f1 f2 sum diff prod quo
  set n1 [getField $f1]
  set n2 [getField $f2]
  $sum setText [expr $n1 + $n2]
  $diff setText [expr $n1 - $n2]
  $prod setText [expr $n1 * $n2]
  $quo setText [expr $n1 / $n2]
}