⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcalculator.java.bak

📁 计算器的源代码,比较简单!
💻 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 + -