1 Awt Calc Java package Calc import java

  • Slides: 99
Download presentation

ÿ操作步骤 步骤 1:创建一个新的应用程序 Awt. Calc. Java,首先创建一个空的窗口。 package Calc; import java. awt. * ; import

ÿ操作步骤 步骤 1:创建一个新的应用程序 Awt. Calc. Java,首先创建一个空的窗口。 package Calc; import java. awt. * ; import java. awt. event. * ; import java. awt. Graphics ;

public class Awt. Calc extends Frame implements Action. Listener { public Awt. Calc(){ super("计算器");

public class Awt. Calc extends Frame implements Action. Listener { public Awt. Calc(){ super("计算器"); set. Background(Color. light. Gray); resize(235, 210); show(); }

public void action. Performed(Action. Event e) { } public void paint(Graphics g) { g.

public void action. Performed(Action. Event e) { } public void paint(Graphics g) { g. draw. Rect(0, 0, size(). width 1, size(). height-1); g. draw. Line(0, 0, 0, size(). height); }

public static void main(String args[]) { Awt. Calc ca=new Awt. Calc(); } }

public static void main(String args[]) { Awt. Calc ca=new Awt. Calc(); } }

public class EText. Field extends Canvas { String message=""; Boolean first. Time=true; Int x;

public class EText. Field extends Canvas { String message=""; Boolean first. Time=true; Int x; public EText. Field(int width, int height) { set. Size(width, height); }

public void set. Text(String text) { first. Time=false; message=text; x+=3; repaint(); }

public void set. Text(String text) { first. Time=false; message=text; x+=3; repaint(); }

public void paint (Graphics g) { g. draw. Rect(0, 0, size(). width 1, size().

public void paint (Graphics g) { g. draw. Rect(0, 0, size(). width 1, size(). height-1); g. draw. String(message, 3, 13); } }

private String input = ""; // 用户的输 入 private Label label; private Color forecolor,

private String input = ""; // 用户的输 入 private Label label; private Color forecolor, // 前景色 backcolor, // 背景色 fieldcolor; // 显示框颜色 private Font font, buttonfont;

然后在构造函数中添加如下代码,将 构件添加到窗口上。 buttonfont = new Font( "Courier", Font. PLAIN, 12 ); set. Background( Color.

然后在构造函数中添加如下代码,将 构件添加到窗口上。 buttonfont = new Font( "Courier", Font. PLAIN, 12 ); set. Background( Color. light. Gray );

result = new EText. Field( 125, 18 ); font = new Font( "宋体", Font.

result = new EText. Field( 125, 18 ); font = new Font( "宋体", Font. ITALIC, 10 ); label = new Label( "结果" ); label. set. Font( font ); result. set. Background( Color. white ); set. Layout( new Flow. Layout() ); //初始化按钮

Panel main. Panel=new Panel(); main. Panel. set. Layout(new Grid. Layout(5, 1)); for ( int

Panel main. Panel=new Panel(); main. Panel. set. Layout(new Grid. Layout(5, 1)); for ( int i = 0; i < 19; i++ ) { buttons[i] = new Button( button. Text[i] ); buttons[i]. set. Font( buttonfont ); buttons[i]. add. Action. Listener( this ); }

Panel panel 1=new Panel(); panel 1. add( result ); panel 1. add( label );

Panel panel 1=new Panel(); panel 1. add( result ); panel 1. add( label ); main. Panel. add(panel 1); Panel panel 2=new Panel(); panel 2. add(buttons[0]); panel 2. add(buttons[1]);

panel 2. add(buttons[2]); panel 2. add(new Label( " " )); panel 2. add(buttons[3]); panel

panel 2. add(buttons[2]); panel 2. add(new Label( " " )); panel 2. add(buttons[3]); panel 2. add(buttons[4]); main. Panel. add(panel 2); Panel panel 3=new Panel(); panel 3. add(buttons[5]);

panel 3. add(buttons[6]); panel 3. add(buttons[7]); panel 3. add(new Label( " " )); panel

panel 3. add(buttons[6]); panel 3. add(buttons[7]); panel 3. add(new Label( " " )); panel 3. add(buttons[8]); panel 3. add(buttons[9]); main. Panel. add(panel 3); Panel panel 4=new Panel(); panel 4. add(buttons[10]);

panel 4. add(buttons[11]); panel 4. add(buttons[12]); panel 4. add(new Label( " " )); panel

panel 4. add(buttons[11]); panel 4. add(buttons[12]); panel 4. add(new Label( " " )); panel 4. add(buttons[13]); panel 4. add(buttons[14]); main. Panel. add(panel 4); Panel panel 5=new Panel();

panel 5. add(buttons[15]); panel 5. add(buttons[16]); panel 5. add(buttons[17]); panel 5. add(new Label( "

panel 5. add(buttons[15]); panel 5. add(buttons[16]); panel 5. add(buttons[17]); panel 5. add(new Label( " " )); panel 5. add(buttons[18]); main. Panel. add(panel 5); add("Center", main. Panel); buttons[15]. set. Foreground( Color. red );

步骤 4:添加事件的处理部分。 package test; import java. awt. *; import java. awt. event. *; import

步骤 4:添加事件的处理部分。 package test; import java. awt. *; import java. awt. event. *; import java. awt. Graphics; public class Awt. Calc extends Frame implements Action. Listener {

private Button[] buttons = new Button[19]; private String[] button. Text = { " 1

private Button[] buttons = new Button[19]; private String[] button. Text = { " 1 " , " 2 ", " 3 ", " + ", " - ", " 4 ", " 5 ", " 6 ", " x ", " / ", " 7 ", " 8 ", " 9 ", "^ ", "sqrt", " C ", " 0 ", " = "};

private EText. Field result; // 结果显示 框 private String input = ""; // 用户的输

private EText. Field result; // 结果显示 框 private String input = ""; // 用户的输 入 private Label label; private Color forecolor, // 前景色 backcolor, // 背景色 fieldcolor; // 显示框颜色

private Font font, buttonfont; private int oper = 0, // 记录运算过程中的运算符 oldoper = 0,

private Font font, buttonfont; private int oper = 0, // 记录运算过程中的运算符 oldoper = 0, newoper = 0;

private double answer, num 1 = 0. 0, num 2 = 0. 0, num

private double answer, num 1 = 0. 0, num 2 = 0. 0, num 3 = 0. 0; private final int ADD=1, // 用于记录运算符的常量

SUB = 2, MULT = 3, DIVI = 4, POW = 5, SQRT =

SUB = 2, MULT = 3, DIVI = 4, POW = 5, SQRT = 6; private boolean firstpress = true, //是 否按下第一个按键

morenums = false, //是否多个数值被输入 equals = false, //等于是否已经被按下 clearscreen = false, //是否清屏 decnumber =

morenums = false, //是否多个数值被输入 equals = false, //等于是否已经被按下 clearscreen = false, //是否清屏 decnumber = false, //是否输入一个浮点数 doubleclick = false; //是否双击

public Awt. Calc(){ super("计算器"); //初始化颜色 buttonfont = new Font( "Courier", Font. PLAIN, 12 );

public Awt. Calc(){ super("计算器"); //初始化颜色 buttonfont = new Font( "Courier", Font. PLAIN, 12 ); set. Background( Color. light. Gray );

result = new EText. Field( 125, 18 ); font = new Font( "宋体", Font.

result = new EText. Field( 125, 18 ); font = new Font( "宋体", Font. ITALIC, 10 ); label = new Label( "结果" ); label. set. Font( font ); result. set. Background( Color. white ); set. Layout( new Flow. Layout() ); //初始化按钮

Panel main. Panel=new Panel(); main. Panel. set. Layout(new Grid. Layout(5, 1)); for ( int

Panel main. Panel=new Panel(); main. Panel. set. Layout(new Grid. Layout(5, 1)); for ( int i = 0; i < 19; i++ ) { buttons[i] = new Button( button. Text[i] ); buttons[i]. set. Font( buttonfont ); buttons[i]. add. Action. Listener( this ); }

Panel panel 1=new Panel(); panel 1. add( result ); panel 1. add( label );

Panel panel 1=new Panel(); panel 1. add( result ); panel 1. add( label ); main. Panel. add(panel 1); Panel panel 2=new Panel(); panel 2. add(buttons[0]); panel 2. add(buttons[1]);

panel 2. add(buttons[2]); panel 2. add(new Label( " " )); panel 2. add(buttons[3]); panel

panel 2. add(buttons[2]); panel 2. add(new Label( " " )); panel 2. add(buttons[3]); panel 2. add(buttons[4]); main. Panel. add(panel 2);

Panel panel 3=new Panel(); panel 3. add(buttons[5]); panel 3. add(buttons[6]); panel 3. add(buttons[7]); panel

Panel panel 3=new Panel(); panel 3. add(buttons[5]); panel 3. add(buttons[6]); panel 3. add(buttons[7]); panel 3. add(new Label( " " )); panel 3. add(buttons[8]); panel 3. add(buttons[9]); main. Panel. add(panel 3);

Panel panel 4=new Panel(); panel 4. add(buttons[10]); panel 4. add(buttons[11]); panel 4. add(buttons[12]); panel

Panel panel 4=new Panel(); panel 4. add(buttons[10]); panel 4. add(buttons[11]); panel 4. add(buttons[12]); panel 4. add(new Label( " " )); panel 4. add(buttons[13]); panel 4. add(buttons[14]); main. Panel. add(panel 4);

Panel panel 5=new Panel(); panel 5. add(buttons[15]); panel 5. add(buttons[16]); panel 5. add(buttons[17]); panel

Panel panel 5=new Panel(); panel 5. add(buttons[15]); panel 5. add(buttons[16]); panel 5. add(buttons[17]); panel 5. add(new Label( " " )); panel 5. add(buttons[18]); main. Panel. add(panel 5);

add("Center", main. Panel); buttons[15]. set. Foreground( Color. red ); resize(235, 210); show(); }

add("Center", main. Panel); buttons[15]. set. Foreground( Color. red ); resize(235, 210); show(); }

public void action. Performed( Action. Event e) { // 判断是否按下一个运算符键 if ( e. get.

public void action. Performed( Action. Event e) { // 判断是否按下一个运算符键 if ( e. get. Source() != buttons[3] && e. get. Source() != buttons[4]

&& e. get. Source() != buttons[8] && e. get. Source() != buttons[9] && e.

&& e. get. Source() != buttons[8] && e. get. Source() != buttons[9] && e. get. Source() != buttons[13] && e. get. Source() != buttons[14] && e. get. Source() != buttons[15] && e. get. Source() != buttons[18] ) { //按下一个数字键

if ( clearscreen ) { // 在完成一次运算后再次按下运算符之前 清屏 clear. Screen(); clearscreen = false; }

if ( clearscreen ) { // 在完成一次运算后再次按下运算符之前 清屏 clear. Screen(); clearscreen = false; }

if ( e. get. Source() == buttons[0] ) { input += "1"; // 输入为"1"

if ( e. get. Source() == buttons[0] ) { input += "1"; // 输入为"1" result. set. Text( input ); show. Answer( input ); } // end else if ( e. get. Source() == buttons[1] ) { input += "2"; // 输入为"2" show. Answer( input ); } // end else if

else if ( e. get. Source() == buttons[2] ) { input += "3"; //

else if ( e. get. Source() == buttons[2] ) { input += "3"; // 输入为"3" show. Answer( input ); } // end else if ( e. get. Source() == buttons[5] ) { input += "4"; // 输入为"4" show. Answer( input ); } // end else if

else if ( e. get. Source() == buttons[6] ) { input += "5"; //

else if ( e. get. Source() == buttons[6] ) { input += "5"; // 输入为"5" show. Answer( input ); } // end if else if ( e. get. Source() == buttons[7] ) { input += "6"; // 输入为"6"

show. Answer( input ); } // end else if ( e. get. Source() ==

show. Answer( input ); } // end else if ( e. get. Source() == buttons[10] ) { input += "7"; // 输入为"7" show. Answer( input ); } // end else if

else if ( e. get. Source() == buttons[11] ) { input += "8"; //

else if ( e. get. Source() == buttons[11] ) { input += "8"; // 输入为"8" show. Answer( input ); } // end else if ( e. get. Source() == buttons[12] ) { input += "9"; // 输入为"9" show. Answer( input ); } // end else if

else if ( e. get. Source() == buttons[16] ) { input += "0"; //

else if ( e. get. Source() == buttons[16] ) { input += "0"; // 输入为"0" show. Answer( input ); } // end else if ( e. get. Source() == buttons[17] ) { if ( decnumber == false ) { //设置输入为浮点数

if ( e. get. Source() == buttons[3] ) { clearscreen = false; decnumber =

if ( e. get. Source() == buttons[3] ) { clearscreen = false; decnumber = false; oper = ADD; // 将运算符设置为加 click. Check( input ); // 检查是否为双击运算符

else if (e. get. Source() == buttons[4] ) { clearscreen = false; decnumber =

else if (e. get. Source() == buttons[4] ) { clearscreen = false; decnumber = false; oper = SUB; // 将运算符设置为减 click. Check( input ); // 检查是否为双击运算符

else if (e. get. Source() == buttons[8] ) { clearscreen = false; decnumber =

else if (e. get. Source() == buttons[8] ) { clearscreen = false; decnumber = false; oper = MULT; // 将运算符设置为乘法 click. Check( input ); // 检查是否为双击运算符

else if (e. get. Source() == buttons[9] ) { clearscreen = false; decnumber =

else if (e. get. Source() == buttons[9] ) { clearscreen = false; decnumber = false; oper = DIVI; // 将运算符设置为除法 click. Check( input ); // 检查是否为双击运算符

else if ( e. get. Source() == buttons[13] ) { clearscreen = false; decnumber

else if ( e. get. Source() == buttons[13] ) { clearscreen = false; decnumber = false; oper = POW; // 将运算符设置为幂 click. Check( input ); // 检查是否为双击运算符

else if ( e. get. Source() == buttons[14] ) { clearscreen = false; oper

else if ( e. get. Source() == buttons[14] ) { clearscreen = false; oper = SQRT; // 将运算符设置为开方 click. Check( input ); // 检查是否为双击运算符

if (e. get. Source() == buttons[15] ) { clear. Screen(); } // end if

if (e. get. Source() == buttons[15] ) { clear. Screen(); } // end if // 检查是否按下等于按钮

if (e. get. Source() == buttons[18] ) { equals = true; clearscreen = true;

if (e. get. Source() == buttons[18] ) { equals = true; clearscreen = true; click. Check( input ); //检查是否为双击运算符 if ( doubleclick == false ) process. Numbers(); //如果没有双击, 继续处理

if ( firstpress ) { if ( equals ) { num 1 = answer;

if ( firstpress ) { if ( equals ) { num 1 = answer; //结果被保存 equals = false; //等待另外的输入 } // end if else num 1 = Double. value. Of( input ). double. Value();

oldoper = oper; // 将当前运算符保存 // 如果进行开方运算 if ( oper == SQRT ) {

oldoper = oper; // 将当前运算符保存 // 如果进行开方运算 if ( oper == SQRT ) { answer = calculate( oldoper, num 1, 0. 0 );

show. Answer( Double. to. String( answer ) ); morenums = true; } firstpress =

show. Answer( Double. to. String( answer ) ); morenums = true; } firstpress = false; } // end if else if ( !morenums ) {

num 2 = Double. value. Of( input ). double. Value(); answer = calculate( oldoper,

num 2 = Double. value. Of( input ). double. Value(); answer = calculate( oldoper, num 1, num 2 ); show. Answer( Double. to. String( answer) ); newoper = oper;

if ( !equals ) morenums = true; //标识已经有至少两个数值被输入 else { morenums = false; //如果等号被按下,

if ( !equals ) morenums = true; //标识已经有至少两个数值被输入 else { morenums = false; //如果等号被按下, firstpress将被置为true firstpress = true; } // end else } // end if

else if (morenums) { //输入多个数值 if ( equals ) { newoper = oper; morenums

else if (morenums) { //输入多个数值 if ( equals ) { newoper = oper; morenums = false; firstpress = true; } // end if

num 3 = Double. value. Of( input ). double. Value(); answer = calculate( newoper,

num 3 = Double. value. Of( input ). double. Value(); answer = calculate( newoper, answer, num 3 ); show. Answer( Double. to. String(answer) ); newoper = oper; } // end else if } // end process. Numbers()

public double calculate( int oper, double number 1, double number 2 ) { double

public double calculate( int oper, double number 1, double number 2 ) { double answer = 0. 0; switch( oper ) { case ADD: answer = number 1 + number 2; break;

case SUB: answer = number 1 - number 2; break; case MULT: answer =

case SUB: answer = number 1 - number 2; break; case MULT: answer = number 1 * number 2; break; case DIVI: answer = number 1 / number 2;

break; case POW: answer = Math. pow( number 1, number 2 ); break; case

break; case POW: answer = Math. pow( number 1, number 2 ); break; case SQRT: answer = Math. sqrt( number 1 ); break; } // end switch

//=============================== ===== public void show. Answer( String s ) { double answer; answer =

//=============================== ===== public void show. Answer( String s ) { double answer; answer = Double. value. Of(s). double. Value();

if ( decnumber ) result. set. Text( Double. to. String(answer) ); else result. set.

if ( decnumber ) result. set. Text( Double. to. String(answer) ); else result. set. Text( s ); } // end show. Answer

public boolean click. Check( String s ) { if ( s == "" )

public boolean click. Check( String s ) { if ( s == "" ) doubleclick = true; else doubleclick = false; return doubleclick; }

public void clear. Screen() { oper = 0; // 初始化各个变量 input = ""; answer

public void clear. Screen() { oper = 0; // 初始化各个变量 input = ""; answer = 0; decnumber = false; morenums = false; firstpress = true; equals = false; show. Answer( Integer. to. String( (int)answer) ); }

public void paint( Graphics g ) { //绘制边界 g. draw. Rect( 0, 0, size().

public void paint( Graphics g ) { //绘制边界 g. draw. Rect( 0, 0, size(). width - 1, size(). height - 1 ); g. draw. Line( 0, 0, 0, size(). height ); }

public static void main(String[] args){ Awt. Calc ca=new Awt. Calc(); } } // end

public static void main(String[] args){ Awt. Calc ca=new Awt. Calc(); } } // end program