當前位置:編程學習大全網 - 編程語言 - 用java 基於SWING的圖形用戶界面設計 編寫壹個應用程序

用java 基於SWING的圖形用戶界面設計 編寫壹個應用程序

package heh;//我自己的包名

import java.awt.*;

import java.awt.event.*;

import javax.swing.event.*;

import javax.swing.*;

public class Jsq extends JFrame

{

Panel pan1=new Panel();

Panel pan2=new Panel();

Panel pan3=new Panel();

Panel pan4=new Panel();

Panel pan5=new Panel();

Label la1=new Label("歡迎使用計算器");

Button bt1=new Button(" ");

Button bt2=new Button("MC");

Button bt3=new Button("MR");

Button bt4=new Button("MS");

Button bt5=new Button("M+");

Button bt11=new Button("Backspace");

Button bt12=new Button("CE");

Button bt13=new Button("C");

Button but[]=new Button[20];

String buta[]={"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","-/+",".","+","="};

JTextField t1=new JTextField("0");//swing組件,可以設置對齊方式

double a=0;//記錄計算中的值或結果

String b="";//“+,-,*,/”運算符號標記

int d=0; //是否剛剛按過運算符號標記

int x=0; //是否剛剛按過“=”號標記

int y=0; //屏幕剛剛出現過漢字的標記

public Jsq()

{

super("計算器");

add(pan1,BorderLayout.NORTH);

add(pan4,BorderLayout.CENTER);

add(pan3,BorderLayout.WEST);

pan3.setLayout(new GridLayout(0,1,10,10));

pan3.add(bt1);pan3.add(bt2);pan3.add(bt3);pan3.add(bt4);pan3.add(bt5);

pan4.setLayout(new BorderLayout());

pan4.add(pan5,BorderLayout.NORTH);

pan4.add(pan2,BorderLayout.CENTER);

pan5.setLayout(new GridLayout(1,3,5,5));

pan5.add(bt11);pan5.add(bt12);pan5.add(bt13);

pan1.setLayout(new GridLayout(3,1));

pan1.add(la1);

pan1.add(t1);

t1.setEditable(false);//文本框設置為不可修改

t1.setHorizontalAlignment(JTextField.RIGHT);//設置文本框對齊方式

pan2.setLayout(new GridLayout(4,5,10,10));

for(int i=0;i<20;i++)

{

but[i]=new Button(buta[i]);

pan2.add(but[i]);

}

but[0].addActionListener(new A());

but[1].addActionListener(new A());

but[2].addActionListener(new A());

but[3].addActionListener(new A());

but[4].addActionListener(new A());

but[5].addActionListener(new A());

but[6].addActionListener(new A());

but[7].addActionListener(new A());

but[8].addActionListener(new A());

but[9].addActionListener(new A());

but[10].addActionListener(new A());

but[11].addActionListener(new A());

but[12].addActionListener(new A());

but[13].addActionListener(new A());

but[14].addActionListener(new A());

but[15].addActionListener(new A());

but[16].addActionListener(new A());

but[17].addActionListener(new A());

but[18].addActionListener(new A());

but[19].addActionListener(new A());

bt11.addActionListener(new A());

bt12.addActionListener(new A());

bt13.addActionListener(new A());

bt1.addActionListener(new A());

bt2.addActionListener(new A());

bt3.addActionListener(new A());

bt4.addActionListener(new A());

bt5.addActionListener(new A());

}

class A implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==but[0]) //"7"

{

if(x==1) //判斷是否剛剛按過"="

{

t1.setText("7");

x=0;

}

if(t1.getText().equals("0.0")||t1.getText().equals("0")||d==1||y==1)

{ //如果顯示為"0"或"0.0"或者剛剛按過運算符號

t1.setText("7"); //或者屏幕顯示為漢字 那麽顯示為"7"

y=0;//將標記設置為0

}

else

t1.setText(t1.getText()+"7");//將顯示的字符串後面加"7"

d=0;//將標記設置為0

if(t1.getText().length()>40)//判斷顯示字符長度是否超過40

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[1]) //"8"

{

if(x==1)

{

t1.setText("8");

x=0;

}

if(t1.getText().equals("0.0")||t1.getText().equals("0")||d==1||y==1)

{

t1.setText("8");

y=0;

}

else

t1.setText(t1.getText()+"8");

d=0;

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[2]) //"9"

{

if(x==1)

{

t1.setText("9");

x=0;

}

if(t1.getText().equals("0.0")||t1.getText().equals("0")||d==1||y==1)

{

t1.setText("9");

y=0;

}

else

t1.setText(t1.getText()+"9");

d=0;

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[3]) //"/"

{

if(y==1) //判斷顯示的是否為漢字

{

t1.setText("0");

y=0;

}

if(d==0) //判斷是否剛剛按過運算符號 防止連續按運算符號產生錯誤

{

if(b.equals("+"))//四則混合運算時 判斷上次計算是否為"+"

{

a=a+Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("-"))//四則混合運算時 判斷上次計算是否為"-"

{

a=a-Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("*"))//四則混合運算時 判斷上次計算是否為"*"

{

a=a*Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("/"))//四則混合運算時 判斷上次計算是否為"/"

{

double f=Double.valueOf(t1.getText()).doubleValue();

if(f==0)//判斷除數是否為0

{

t1.setText("錯誤!請按“CE”清屏後繼續計算");

y=1;

}

else

{

a=a/Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

}

if(b.equals(""))//判斷進行的是不是四則混合運算的第壹次運算

{

a=Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

}

if(!t1.getText().equals("錯誤!請按“CE”清屏後繼續計算"))//是否出現了除數為零的錯誤

{

b="/";//運算符號標記設置為"/"

d=1; //標記已經按過運算符號

}

if(t1.getText().length()>40)//判斷顯示字符長度是否超過40

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;//將記憶的數字抹去

b="";//運算符號標記 為未按過運算符號

d=0;//標記 剛剛沒有按過運算符號

y=1;//標記 屏幕顯示了漢字

}

}

if(e.getSource()==but[4]) //"sqrt"

{

if(y==1)

{

t1.setText("0");

y=0;

}

double f=Double.valueOf(t1.getText()).doubleValue();

if(f<0) //判斷被開放數是否小於零

{

t1.setText("錯誤!被開方數小於0,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

else

{

f=Math.sqrt(f);

t1.setText(""+(f));

}

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[5]) //"4"

{

if(x==1)

{

t1.setText("4");

x=0;

}

if(t1.getText().equals("0.0")||t1.getText().equals("0")||d==1||y==1)

{

t1.setText("4");

y=0;

}

else

t1.setText(t1.getText()+"4");

d=0;

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[6]) //"5"

{

if(x==1)

{

t1.setText("5");

x=0;

}

if(t1.getText().equals("0.0")||t1.getText().equals("0")||d==1||y==1)

{

t1.setText("5");

y=0;

}

else

t1.setText(t1.getText()+"5");

d=0;

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[7]) //"6"

{

if(x==1)

{

t1.setText("6");

x=0;

}

if(t1.getText().equals("0.0")||t1.getText().equals("0")||d==1||y==1)

{

t1.setText("6");

y=0;

}

else

t1.setText(t1.getText()+"6");

d=0;

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[8]) //"*"

{

if(y==1)

{

t1.setText("0");

y=0;

}

if(d==0)

{

if(b.equals("+"))

{

a=a+Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("-"))

{

a=a-Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("*"))

{

a=a*Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("/"))

{

double f=Double.valueOf(t1.getText()).doubleValue();

if(f==0)

{

t1.setText("錯誤!請按“CE”清屏後繼續計算");

y=1;

}

else

{

a=a/Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

}

if(b.equals(""))

{

a=Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

}

if(!t1.getText().equals("錯誤!請按“CE”清屏後繼續計算"))

{

b="*";

d=1;

}

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[9]) //"%"

{

if(y==1)

{

t1.setText("0");

y=0;

}

double f=Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+(f/100));

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[10]) //"1"

{

if(x==1)

{

t1.setText("1");

x=0;

}

if(t1.getText().equals("0.0")||t1.getText().equals("0")||d==1||y==1)

{

t1.setText("1");

y=0;

}

else

t1.setText(t1.getText()+"1");

d=0;

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[11]) //"2"

{

if(x==1)

{

t1.setText("2");

x=0;

}

if(t1.getText().equals("0.0")||t1.getText().equals("0")||d==1||y==1)

{

t1.setText("2");

y=0;

}

else

t1.setText(t1.getText()+"2");

d=0;

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[12]) //"3"

{

if(x==1)

{

t1.setText("3");

x=0;

}

if(t1.getText().equals("0.0")||t1.getText().equals("0")||d==1||y==1)

{

t1.setText("3");

y=0;

}

else

t1.setText(t1.getText()+"3");

d=0;

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[13]) //"-"

{

if(y==1)

{

t1.setText("0");

y=0;

}

if(d==0)

{

if(b.equals("+"))

{

a=a+Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("-"))

{

a=a-Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("*"))

{

a=a*Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("/"))

{

double f=Double.valueOf(t1.getText()).doubleValue();

if(f==0)

{

t1.setText("錯誤!請按“CE”清屏後繼續計算");

y=1;

}

else

{

a=a/Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

}

if(b.equals(""))

{

a=Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

}

if(!t1.getText().equals("錯誤!請按“CE”清屏後繼續計算"))

{

b="-";

d=1;

}

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[14]) //"1/x"

{

if(y==1)

{

t1.setText("0");

y=0;

}

else

{

double f=Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+(1/f));

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

}

if(e.getSource()==but[15]) //"0"

{

if(x==1)

{

t1.setText("0");

x=0;

}

if(t1.getText().equals("0.0")||t1.getText().equals("0")||d==1||y==1)

{

t1.setText("0");

y=0;

}

else

t1.setText(t1.getText()+"0");

d=0;

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[16]) //"-/+"

{

if(y==1)

{

t1.setText("0");

y=0;

}

double f=Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+(-f));

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[17]) //"."

{

if(y==1)

{

t1.setText("0");

y=0;

}

if(t1.getText().indexOf(".")==-1)//判斷是否已經有"."

{

t1.setText(t1.getText()+".");

}

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[18]) //"+"

{

if(y==1)

{

t1.setText("0");

y=0;

}

if(d==0)

{

if(b.equals("+"))

{

a=a+Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("-"))

{

a=a-Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("*"))

{

a=a*Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("/"))

{

double f=Double.valueOf(t1.getText()).doubleValue();

if(f==0)

{

t1.setText("錯誤!請按“CE”清屏後繼續計算");

y=1;

}

else

{

a=a/Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

}

if(b.equals(""))

{

a=Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

}

if(!t1.getText().equals("錯誤!請按“CE”清屏後繼續計算"))

{

b="+";

d=1;

}

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==but[19]) //"="

{

if(y==1)

{

t1.setText("0");

y=0;

}

if(b.equals("+"))

{

a=a+Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("-"))

{

a=a-Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("*"))

{

a=a*Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(b.equals("/"))

{

double f=Double.valueOf(t1.getText()).doubleValue();

if(f==0)

{

t1.setText("錯誤!請按“CE”清屏後繼續計算");

y=1;

}

else

{

a=a/Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

}

if(b.equals(""))

{

a=Double.valueOf(t1.getText()).doubleValue();

t1.setText(""+a);

}

if(!t1.getText().equals("錯誤!請按“CE”清屏後繼續計算"))

{

b="";

d=1;

x=1;

}

if(t1.getText().length()>40)

{

t1.setText("錯誤!數字過長,請按“C”從新輸入");

a=0.0;

b="";

d=0;

y=1;

}

}

if(e.getSource()==bt11) //"Backspace"

{

if(y==1)

{

t1.setText("0");

y=0;

}

else

{

String s1=t1.getText();

if(s1.length()==1)//如果將顯示的數字全部退掉 則顯示"0"

{

t1.setText("0");

}

else

{

t1.setText(s1.substring(0,(s1.length()-1)));//退格

}

}

}

if(e.getSource()==bt12) //"CE"

{

t1.setText("0");//清屏

}

if(e.getSource()==bt13) //"C" 初始化

{

t1.setText("0");

a=0.0;

b="";

d=0;

}

if(e.getSource()==bt1) //""

{

}

if(e.getSource()==bt2) //"MC"

{

}

if(e.getSource()==bt3) //"MR"

{

}

if(e.getSource()==bt4) //"MS"

{

}

if(e.getSource()==bt5) //"M+"

{

}

}

}

public static void main(String args[])

{

Jsq a=new Jsq();

a.setSize(300,250);

a.setVisible(true);

}

}

  • 上一篇:為什麽MQ的編程用JAVA好呢?
  • 下一篇:python遊戲引擎有哪些?
  • copyright 2024編程學習大全網