import groovy.swing.*;
import java.awt.*;
import javax.swing.*;
public class Calc{
def sb = new SwingBuilder();
public static void main(String[] args) {
// create itself
new Calc(args);
}
public Calc(String[] args){
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screenSize = tk.getScreenSize();
final int WIDTH = screenSize.width;
final int HEIGHT = screenSize.height;
int w = WIDTH / 2
int h = HEIGHT / 2
int x = (WIDTH / 2) - (w / 2)
int y = (HEIGHT / 2) - (h / 2) - 50
sb.frame(id:"calcFrame", title:"XCalc", visible:true, alwaysOnTop:true, resizable:false, defaultCloseOperation:JFrame.EXIT_ON_CLOSE, location:[x, y], size:[w, h]) {
borderLayout()
textField(id:"display", editable:false, horizontalAlignment:JTextField.RIGHT, constraints:BorderLayout.NORTH);
panel(constraints:BorderLayout.CENTER){
gridLayout(cols:4, rows:5, hgap:2, vgap:2)
if (args.size() > 0)
label(args[0])
else
label("")
label("")
button(text:"<", actionPerformed:{backSpace()})
button(text:"X", actionPerformed:{clear()})
button(text:"7", actionPerformed:{insertText(it.source.text)})
button(text:"8", actionPerformed:{insertText(it.source.text)})
button(text:"9", actionPerformed:{insertText(it.source.text)})
button(text:"/", actionPerformed:{insertText(it.source.text)})
button(text:"4", actionPerformed:{insertText(it.source.text)})
button(text:"5", actionPerformed:{insertText(it.source.text)})
button(text:"6", actionPerformed:{insertText(it.source.text)})
button(text:"*", actionPerformed:{insertText(it.source.text)})
button(text:"1", actionPerformed:{insertText(it.source.text)})
button(text:"2", actionPerformed:{insertText(it.source.text)})
button(text:"3", actionPerformed:{insertText(it.source.text)})
button(text:"-", actionPerformed:{insertText(it.source.text)})
button(text:"0", actionPerformed:{insertText(it.source.text)})
button(text:".", actionPerformed:{insertText(it.source.text)})
button(text:"=", actionPerformed:{doEquals()})
button(text:"+", actionPerformed:{insertText(it.source.text)})
}
}
//sb.calcFrame.pack(); //compact display, ignores the size attribute
sb.calcFrame.show();
}
public void insertText(text){
sb.display.text += text
}
public void backSpace(){
sb.display.text=sb.display.text[0..sb.display.text.length()-2]
}
public void clear(){
sb.display.text="";
}
public void doEquals(){
GroovyShell shell = new GroovyShell();
sb.display.text = shell.evaluate(sb.display.text);
}
}
http://groovyconsole.appspot.com/script/449002
Tuesday, March 29, 2011
Swing Calculator
Labels:
builder,
swing,
swingbuilder
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment