?? exlp.java
字號:
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
public class exlp extends Frame implements ActionListener {
private Button[] buttons = new Button[19];
private String[] buttonText =
{ "1", "2", "3", "+", "-",
"4", "5", "6", "x", "/",
"7", "8", "9", "^", "sqrt",
"c", "0", ".", " = "
};
private ETextField result;
private String input = "";
private Label label;
private Color forecolor,
backcolor,
fieldcolor;
private Font font,
buttonfont;
private int oper = 0,
oldoper = 0,
newoper = 0;
private double answer,
num1 = 0.0,
num2 = 0.0,
num3 = 0.0;
private final int ADD = 1,
SUB = 2,
MULT = 3,
DIVI = 4,
POW = 5,
SQRT =6;
private boolean firstpress = true,
morenums = false,
equals = false,
clearscreen = false,
decnumber = false,
doubleclick = false;
public exlp() {
super("計算器");
buttonfont = new Font( "Courier", Font.PLAIN, 12 );
setBackground(Color.lightGray);
result = new ETextField(123,20);
font = new Font( "宋體", Font.PLAIN, 10) ;
label = new Label("結果");
label.setFont( font );
result.setBackground( Color.white);
setLayout(new FlowLayout());
Panel mainPanel=new Panel();
mainPanel.setLayout( new GridLayout(5,1) );
for ( int i = 0; i<19; i++ ) {
buttons[i] = new Button( buttonText[i] );
buttons[i].setFont( buttonfont );
buttons[i].addActionListener( this );
}
Panel panel1=new Panel();
panel1.add( result );
panel1.add( label );
mainPanel.add( panel1);
Panel panel2=new Panel();
panel2.add( buttons[0]);
panel2.add( buttons[1]);
panel2.add( buttons[2]);
panel2.add( new Label( " " ));
panel2.add( buttons[3]);
panel2.add( buttons[4]);
mainPanel.add( panel2);
Panel panel3=new Panel();
panel3.add( buttons[5]);
panel3.add( buttons[6]);
panel3.add( buttons[7]);
panel3.add( new Label( " " ));
panel3.add( buttons[8]);
panel3.add( buttons[9]);
mainPanel.add( panel3);
Panel panel4=new Panel();
panel4.add( buttons[10]);
panel4.add( buttons[11]);
panel4.add( buttons[12]);
panel4.add( new Label( " " ));
panel4.add( buttons[13]);
panel4.add( buttons[14]);
mainPanel.add( panel4);
Panel panel5=new Panel();
panel5.add( buttons[15]);
panel5.add( buttons[16]);
panel5.add( buttons[17]);
panel5.add( new Label( " " ));
panel5.add( buttons[18]);
mainPanel.add( panel5);
add( "Center",mainPanel );
buttons[15].setForeground( Color.red );
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
resize(200,210);
show();
}
public void actionPerformed( ActionEvent e) {
if (e.getSource() != buttons[3] && e.getSource() != buttons[4]
&& e.getSource() != buttons[8] && e.getSource() != buttons[9]
&& e.getSource() != buttons[13] && e.getSource() != buttons[14]
&& e.getSource() != buttons[15] && e.getSource() != buttons[18]) {
if ( clearscreen ) {
clearScreen();
clearscreen = false;
}
if ( e.getSource() == buttons[0] ) {
input += "1";
result.setText( input );
showAnswer( input );
} else if ( e.getSource() == buttons[1] ) {
input += "2";
showAnswer( input );
} else if ( e.getSource() == buttons[2] ) {
input += "3";
showAnswer( input );
} else if ( e.getSource() == buttons[5] ) {
input += "4";
showAnswer( input );
} else if ( e.getSource() == buttons[6] ) {
input += "5";
showAnswer( input );
} else if ( e.getSource() == buttons[7] ) {
input += "6";
showAnswer( input );
} else if ( e.getSource() == buttons[10] ) {
input += "7";
showAnswer( input );
} else if ( e.getSource() == buttons[11] ) {
input += "8";
showAnswer( input );
} else if ( e.getSource() == buttons[12] ) {
input += "9";
showAnswer( input );
} else if ( e.getSource() == buttons[16] ) {
input += "0";
showAnswer( input );
} else if ( e.getSource() == buttons[17] ) {
if ( decnumber == false ) {
decnumber = true;
input += ".0";
showAnswer( input );
}
}
}
if ( e.getSource() == buttons[3] ) {
clearscreen = false;
decnumber = false;
oper = ADD;
clickCheck( input );
if ( doubleclick == false )
processNumbers();
input = "";
} else if ( e.getSource() == buttons[4] ) {
clearscreen = false;
decnumber = false;
oper = SUB;
clickCheck( input );
if ( doubleclick == false )
processNumbers();
input = " ";
} else if ( e.getSource() == buttons[8] ) {
clearscreen = false;
decnumber = false;
oper = MULT;
clickCheck( input );
if ( doubleclick == false )
processNumbers();
input = " ";
} else if ( e.getSource() == buttons[9] ) {
clearscreen = false;
decnumber = false;
oper = DIVI;
clickCheck( input );
if ( doubleclick == false )
processNumbers();
input = " ";
} else if ( e.getSource() == buttons[13] ) {
clearscreen = false;
decnumber = false;
oper = POW;
clickCheck( input );
if ( doubleclick == false )
processNumbers();
input = " ";
} else if ( e.getSource() == buttons[14] ) {
clearscreen = false;
oper = SQRT;
clickCheck( input );
if ( doubleclick == false )
processNumbers();
input = " ";
}
if ( e.getSource() == buttons[15] ) {
clearScreen();
}
if ( e.getSource() == buttons[18] ) {
equals = true;
clearscreen = false;
decnumber = false;
clickCheck( input );
if ( doubleclick == false )
processNumbers();
input = Double.toString( answer );
}
}
public void processNumbers() {
if ( firstpress ) {
if ( equals ) {
num1 = answer;
equals =false;
} else
num1 = Double.valueOf( input ).doubleValue();
oldoper = oper;
if ( oper == SQRT ) {
answer = calculate( oldoper, num1, 0.0 ) ;
showAnswer( Double.toString( answer ) ) ;
morenums = true;
}
firstpress = false;
} else if ( !morenums ) {
num2 = Double.valueOf( input ).doubleValue() ;
answer = calculate( oldoper, num1, num2 ) ;
showAnswer( Double.toString( answer ) ) ;
newoper = oper;
if ( !equals )
morenums = true;
else {
morenums = false;
firstpress = true;
}
} else if ( morenums ) {
if ( equals ) {
newoper = oper;
morenums = false;
}
num3 = Double.valueOf( input ).doubleValue();
answer = calculate( newoper, answer, num3);
showAnswer( Double.toString (answer) );
newoper = oper;
}
}
public double calculate( int oper, double number1, double number2 ) {
double answer = 0.0;
switch ( oper ) {
case ADD:
answer = number1 + number2;
break;
case SUB:
answer = number1 - number2;
break;
case MULT:
answer = number1 * number2;
break;
case DIVI:
answer = number1 / number2;
break;
case POW:
answer = Math.pow( number1, number2 );
break;
case SQRT:
answer = Math.sqrt( number1 );
break;
}
return answer;
}
public void showAnswer( String s) {
double answer;
answer = Double.valueOf(s).doubleValue();
if ( decnumber )
result.setText( Double.toString( answer ) );
else
result.setText(s);
}
public boolean clickCheck( String s ) {
if ( s == " " )
doubleclick = true;
else
doubleclick = false;
return doubleclick;
}
public void clearScreen() {
oper = 0;
input = " ";
answer = 0;
decnumber = false;
morenums = false;
firstpress = true;
equals = false;
showAnswer( Integer.toString ( (int) answer) );
}
public void paint(Graphics g ) {
g.drawRect( 0, 0, size() .width - 1, size() .height - 1);
g.drawLine( 0, 0, 0, size() .height );
}
public static void main( String[] args ) {
exlp ca=new exlp();
}
}
class ETextField extends Canvas {
String message = " ";
boolean firstTime = true;
int x;
public ETextField( int width, int height ) {
setSize( width, height );
}
public void setText( String text ) {
firstTime = false;
message = text;
x+=3;
repaint();
}
public void paint( Graphics g ) {
g.drawRect( 0, 0, size().width-1, size().height-1 );
g.drawString( message, 3, 13 );
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -