📄 tcalculator.java.bak
字号:
// Calculator.java
//<applet Code="TCalculator" Width=275 Height=45 ></applet>
import java.applet.Applet;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class Calculator extends JPanel implements ActionListener,KeyListener
{
JPanel Bpanel = new JPanel ();
JTextField text = new JTextField ( " 0. " );
double result = 0.0;
String st , oper = "";
boolean flag = false;
public Calculator ()
{
setLayout ( new BorderLayout () );
JPanel panel1 = new JPanel (), panel2 = new JPanel ();
panel1.setLayout ( new GridLayout ( 1, 0 ) );
JButton but1 = new JButton ( "Backspace" );
but1.setForeground ( Color.black );
but1.addActionListener ( this );
but1.addKeyListener ( this );
JButton but2 = new JButton("CE");
but2.setForeground ( Color.black );
but2.addActionListener ( this );
but2.addKeyListener ( this );
JButton but3 = new JButton ( "C" );
but3.setForeground ( Color.black );
but3.addActionListener ( this );
but3.addKeyListener ( this );
panel1.add ( but1 );
panel1.add ( but2 );
panel1.add ( but3 );
JButton [] b = new JButton [ 17 ];
for ( int i = 1; i <= 16; i++ )
{
b [ i ] = new JButton ();
b [ i ].setForeground ( Color.black );
}
b [ 1 ].setText ( "7" );
b [ 2 ].setText ( "8" );
b [ 3 ].setText ( "9" );
b [ 4 ].setText ( "+" );
b [ 5 ].setText ( "4" );
b [ 6 ].setText ( "5" );
b [ 7 ].setText ( "6" );
b [ 8 ].setText ( "-" );
b [ 9 ].setText ( "1" );
b [ 10 ].setText ( "2" );
b [ 11 ].setText ( "3" );
b [ 12 ].setText ( "*" );
b [ 13 ].setText( "0" );
b [ 14 ].setText ( "." );
b [ 15 ].setText ( "=" );
b [ 16 ].setText ( "/" );
panel2.setLayout ( new GridLayout ( 4,4 ) );
for ( int i = 1; i <= 16; i++ )
{
panel2.add ( b [ i ] );
b [ i ].addActionListener ( this );
b [ i ].addKeyListener ( this );
}
Bpanel.setLayout ( new BorderLayout() );
Bpanel.add ( panel1, BorderLayout.NORTH );
Bpanel.add ( panel2, BorderLayout.CENTER );
text.setHorizontalAlignment ( JTextField.RIGHT );
text.setFocusable(false);
add ( text, BorderLayout.NORTH );
add ( Bpanel, BorderLayout.CENTER );
}
public void actionPerformed ( ActionEvent e )
{
System.out.println("in actionperformed " + e.getActionCommand()) ;
String sMouse = e.getActionCommand () ;
manage ( sMouse );
}
public void keyPressed ( KeyEvent e ) { }
public void keyReleased ( KeyEvent e ) { }
public void keyTyped ( KeyEvent e )
{
System.out.println("in keyTyped " + e.getKeyChar() ) ;
String sKey = String.valueOf ( e.getKeyChar () ) ;
/** deal the exception -- the input is not a number */
try
{
String[] a = {"1", "2", "3" , "4", "5", "6", "7", "8", "9", "0",
"+", "-", "*", "/", ".", "=", "Back", "CE", "C"};
int j = 0;
for ( int i = 0; i < 16; i ++ )
if ( sKey.equals( a [ i ] ) )
j ++;
if ( j == 0 )
throw new NotNumberException( sKey );
}
catch ( NotNumberException ex )
{
text.setText ( "0" );
System.out.println ( ex );
}
manage ( sKey );
}
private void manage ( String s ) throws RuntimeException
{
st = text.getText () ;
try
{
if( s.equals("0")||s.equals("1") || s.equals("2") || s.equals("3") || s.equals("4") || s.equals("5") ||
s.equals("6") || s.equals("7") || s.equals("8") || s.equals("9") )
{
if ( flag )
text.setText (st+s);
else
{
text.setText (s);
flag = true;
}
}
else if ( s.equals( ".") )
{
if ( st.indexOf ( ".", 0 ) == -1 )
{
if ( flag )
text.setText (st+s);
else
{
text.setText ( "0." );
flag = true;
}
}
}
else if ( s.equals( "+") || s.equals( "-") || s.equals( "*") || s.equals( "/") )
{
if ( oper != "" )
{
if ( oper.equals ( "+" ) ) result += Double.parseDouble (st);
if ( oper.equals ( "-" ) ) result -= Double.parseDouble (st);
if ( oper.equals ( "*" ) ) result *= Double.parseDouble (st);
if ( oper.equals ( "/" ) ) /** deal the exception -- Denominator is zero */
{
if ( Double.parseDouble ( st ) == 0 )
throw new RuntimeException ( "Denominator cannot be zero" );
else
result /= Double.parseDouble (st);
}
result = round ( result );
if ( change ( result ) )
text.setText ( String.valueOf( ( long ) result ) );
else
text.setText ( String.valueOf ( result ) );
}
else result = Double.parseDouble (st);
oper = s;
flag = false;
}
else if( s.equals( "=") )
{
if ( oper.equals( "+" ) ) result += Double.parseDouble (st);
if ( oper.equals( "-" ) ) result -= Double.parseDouble (st);
if ( oper.equals( "*" ) ) result *= Double.parseDouble (st);
if ( oper.equals( "/" ) ) /** deal the exception -- Denominator is zero */
{
if ( Double.parseDouble ( st ) == 0 )
throw new RuntimeException ( "Denominator cannot be zero" );
else
result /= Double.parseDouble (st);
}
result = round ( result );
if ( change ( result ) )
text.setText ( String.valueOf ( ( long ) result ) );
else
text.setText ( String.valueOf ( result ) );
oper = "";
flag = false;
}
else if ( s == "Backspace" )
{
text.setText ( st.substring ( 0, st.length() -1 ) );
}
else if ( s == "CE" )
{
text.setText ( "0" );
flag = false;
}
else if( s == "C" )
{
result = 0;
text.setText ( "0" );
flag = false;
}
/**else
System.out.println ( "Sorry! You have input a wrong character!" );*/
}
catch( Exception ex )
{
text.setText( "0" );
System.out.println( ex );
}
}
private boolean change ( double d )
{
long a = ( long ) d;
if ( a == d )
return true;
else
return false;
}
private double round ( double d )
{
long a = Math.round ( d * Math.pow ( 10, 15 ) );
return ( 1.0 * a ) / Math.pow ( 10, 15 );
}
/** the notnumberexception */
private class NotNumberException extends Exception
{
private String letter;
public NotNumberException( String letter )
{
super( "Sorry, it should be a number or operation!Wrong character has been input." );
this.letter = letter;
}
public String getLetter()
{
return letter;
}
}
}
public class TCalculator extends Applet
{
Calculator calculator;
public void init()
{
calculator=new Calculator();
setLayout(new FlowLayout());
add(calculator);
this.setSize(211,220);
}
public static void main ( String [] args )
{
JFrame frame = new JFrame ( " Java Calculator! " );
frame.setDefaultCloseOperation ( 3 );
frame.setSize ( 250, 250 );
frame.setResizable ( false );
frame.setLocation ( 250, 150 );
Calculator cp = new Calculator ();
frame.setContentPane ( cp );
frame.show ();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -