用SWT写了第一个计算器,代码如下
package SimpleShell;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class simpleShell {
private double result=0;
private double num1=0,num2=0;
private char i=0;
private boolean clickable = true;
private boolean isDot = true;
private Text text;
private String temp = null;
private int flag;
simpleShell(){
Display d = new Display();
Shell s = new Shell(d, SWT.CLOSE |SWT.MIN ); //把最大化给去掉了
s.setSize(400,500);
s.setText("计算器");
s.setImage(new Image(d, "C://eclipse//icons//4.ico")); //在窗口的右上方加了一个萌萌的图标O(∩_∩)O~ 引用时请去掉
s.open();
text = new Text(s,SWT.RIGHT | SWT.BORDER);
text.setBounds(10, 5, 240, 100);
//"0"
final Button b0 = new Button(s, SWT.PUSH);
b0.setBounds(10,360,120,60);
b0.setText("0");
b0.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
if(clickable==false){
text.setText("");
text.setText(text.getText()+0);
clickable=true;
}
else{
text.setText(text.getText()+0);
}
}
});
//"1"
final Button b1 = new Button(s, SWT.PUSH);
b1.setBounds(10,300,60,60);
b1.setText("1");
b1.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
if(clickable==false){
text.setText("");
text.setText(text.getText()+1);
clickable=true;
}
else{
text.setText(text.getText()+1);
}
}
});
//"2"
final Button b2 = new Button(s, SWT.PUSH);
b2.setBounds(70,300,60,60);
b2.setText("2");
b2.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
if(clickable==false){
text.setText("");
text.setText(text.getText()+2);
clickable=true;
}
else{
text.setText(text.getText()+2);
}
}
});
//"3"
final Button b3 = new Button(s, SWT.PUSH);
b3.setBounds(130,300,60,60);
b3.setText("3");
b3.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
if(clickable==false){
text.setText("");
text.setText(text.getText()+3);
clickable=true;
}
else{
text.setText(text.getText()+3);
}
}
});
//"4"
final Button b4 = new Button(s, SWT.PUSH);
b4.setBounds(10,240,60,60);
b4.setText("4");
b4.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
if(clickable==false){
text.setText("");
text.setText(text.getText()+4);
clickable=true;
}
else{
text.setText(text.getText()+4);
}
}
});
//"5"
final Button b5 = new Button(s, SWT.PUSH);
b5.setBounds(70,240,60,60);
b5.setText("5");
b5.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
if(clickable==false){
text.setText("");
text.setText(text.getText()+5);
clickable=true;
}
else{
text.setText(text.getText()+5);
}
}
});
//"6"
final Button b6 = new Button(s, SWT.PUSH);
b6.setBounds(130,240,60,60);
b6.setText("6");
b6.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
if(clickable==false){
text.setText("");
text.setText(text.getText()+6);
clickable=true;
}
else{
text.setText(text.getText()+6);
}
}
});
//"7"
final Button b7 = new Button(s, SWT.PUSH);
b7.setBounds(10,180,60,60);
b7.setText("7");
b7.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
if(clickable==false){
text.setText("");
text.setText(text.getText()+7);
clickable=true;
}
else{
text.setText(text.getText()+7);
}
}
});
//"8"
final Button b8 = new Button(s, SWT.PUSH);
b8.setBounds(70,180,60,60);
b8.setText("8");
b8.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
if(clickable==false){
text.setText("");
text.setText(text.getText()+8);
clickable=true;
}
else{
text.setText(text.getText()+8);
}
}
});
//"9"
final Button b9 = new Button(s, SWT.PUSH);
b9.setBounds(130,180,60,60);
b9.setText("9");
b9.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
if(clickable==false){
text.setText("");
text.setText(text.getText()+9);
clickable=true;
}
else{
text.setText(text.getText()+9);
}
}
});
//"dot"
final Button bDot = new Button(s, SWT.PUSH);
bDot.setBounds(130,360,60,60);
bDot.setText(".");
bDot.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
if(text.getText()!=""&&isDot==true){
text.setText(text.getText()+".");
isDot=false;
}
else{
text.setText(text.getText());
}
}
});
//"+"
final Button bAdd = new Button(s, SWT.PUSH);
bAdd.setBounds(190,360,60,60);
bAdd.setText("+");
bAdd.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
if (text.getText() != ""){
num1 = Double.parseDouble(text.getText());
temp = "add";
clickable = false;
}
}
});
//"minus"
final Button bMinus = new Button(s, SWT.PUSH);
bMinus.setBounds(190,300,60,60);
bMinus.setText("-");
bMinus.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
if (text.getText() != ""){
num1 = Double.parseDouble(text.getText());
temp = "minus";
clickable = false;
//text.setText(text.getText());
}
}
});
//"multiply"
final Button bMultiply = new Button(s, SWT.PUSH);
bMultiply.setBounds(190,240,60,60);
bMultiply.setText("*");
bMultiply.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
if (text.getText() != ""){
num1 = Double.parseDouble(text.getText());
temp = "mul";
clickable = false;
//text.setText(text.getText());
}
}
});
//"devide"
final Button bDevide = new Button(s, SWT.PUSH);
bDevide.setBounds(190,180,60,60);
bDevide.setText("/");
bDevide.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
if (text.getText() != ""){
num1 = Double.parseDouble(text.getText());
temp = "div";
clickable = false;
//text.setText(text.getText());
}
}
});
//"C"
final Button bC = new Button(s, SWT.PUSH);
bC.setBounds(70,120,60,60);
bC.setText("C");
bC.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
text.setText("");
num1 = 0;
temp = null;
}
});
//"AC"
final Button bAC = new Button(s, SWT.PUSH);
bAC.setBounds(10,120,60,60);
bAC.setText("AC");
bAC.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(final SelectionEvent e){
text.setText("");
num1=0;
num2=0;
temp=null;
}
});
//"UNDO"
final Button bUndo = new Button(s, SWT.PUSH);
bUndo.setBounds(130,120,60,60);
bUndo.setText("←");
bUndo.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
if (text.getText() != "") {
String s = text.getText();
text.setText("");
for (int i = 0; i < s.length() - 1; i++) {
char a = s.charAt(i);
text.setText(text.getText() + a);
}
}
}
});
//"="
final Button bEqual = new Button(s, SWT.NONE);
bEqual.setBounds(190,120,60,60);
bEqual.setText("=");
bEqual.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(final SelectionEvent e) {
if (temp != null && text.getText() != ""){
num2 = Double.parseDouble(text.getText());
if (temp == "add"){
text.setText(Double.toString((double) (num1 + num2)));
temp = null;
}else if (temp == "sub"){
text.setText(Double.toString((double) (num1 - num2)));
temp = null;
}else if (temp == "mul"){
text.setText(Double.toString((double) (num1 * num2)));
temp = null;
}else if (temp == "div"){
text.setText(Double.toString((double) (num1 / num2)));
temp = null;
}
}
}
});
/*temple
b1.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent e){
s.setText("");
}
});*/
/*
final Text text1 = new Text(s, SWT.SINGLE |SWT.BORDER);
text1.setBounds(15,10,235,100);
text1.setEnabled(false);
*/
s.layout();
while(!s.isDisposed()){
if(!d.readAndDispatch())
d.sleep();
}
}
/*public static void main(String [] args){
simpleShell ss = new simpleShell();
}*/
}
/*另外的一个类,用于启动*/
public class Runner {
public static void main(String[] args){
simpleShell ss = new simpleShell();
}
}
首先,导入SWT就花了我整整一个下午,本打算一点点的从SWT最基本的功能学起,结果在成功的画出窗口以后,就情不自禁的往里面加按钮什么的,于是几本界面就画成了。所以上面代码里类的名字会是simpleShell。。。。。。然后窗口画的有点点大,呵呵,就这样吧~
然后就是在输入加减乘除的时候会有+setText出现在文本框里的BUG调了我两天,成功后,计算器就成了。
bug还是有的,但几本功能都有,就写这么多吧,C课设去了~