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

📄 calculator.java

📁 我做的一个java计算器小程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.*;
import java.awt.geom.*;
import java.io.*;
import javax.imageio.*;

 public class calculator
  {
     public static void main(String[] args)
     {
        CalculatorFrame frame = new CalculatorFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.show();
     }
  }


  class CalculatorFrame extends JFrame
  {
     public CalculatorFrame()//frame
    {
        setTitle("Calculator");

        Container contentPane = getContentPane();
        CalculatorPanel panel = new CalculatorPanel();
        contentPane.add(panel);

        MenuBar menuBar = new MenuBar();
        Menu menuFile = new Menu();
        MenuItem menuFileExit = new MenuItem();


        menuFile.setLabel("File");
        menuFileExit.setLabel("Exit");


        menuFileExit.addActionListener//下拉菜单
        (
            new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                    }
            }
        );
        menuFile.add(menuFileExit);
        menuBar.add(menuFile);

        setTitle("Calculator");
        setMenuBar(menuBar);
        setSize(new Dimension(800, 320));


    }

 }


 class CalculatorPanel extends JPanel
  {
     private JPanel panel;
  	 private DrawPanel display;
  	 private double result;
     private String lastCommand;
     private String nowCommand;
  	 private int p_point;//小数点位置
  	 private int count;
  	 private int a1;
  	 private String elem;
  	 private boolean start;
  	 private boolean minus;//负数
  	 private boolean E;//"E"
  	 private boolean negative;//负号
  	 private boolean state;//小数点状态
  	 private int[] display_num=new int[10];

 	 public CalculatorPanel()
 	 {

		 setLayout(new BorderLayout());

		 start = true;
         state = false;
         minus = false;
         E = false;
         negative = false;
         count = 0;
         elem = "";
         result = 0;
         lastCommand = "=";

        display=new DrawPanel();
        add(display, BorderLayout.CENTER);


        panel = new JPanel();
        panel.setLayout(new GridLayout(5, 4));

         ActionListener insert = new InsertAction();//数子监听
		 ActionListener command = new CommandAction();//+-*\监听	
		 ActionListener function = new FunctionAction();//函数sincos监听
         ActionListener clr = new clear_listener();//清空

        

        addButton("7", insert);
        addButton("8", insert);
        addButton("9", insert);
        addButton("/",  command);

        addButton("4", insert);
        addButton("5", insert);
        addButton("6", insert);
        addButton("x",command);

        addButton("1", insert);
        addButton("2", insert);
        addButton("3", insert);
        addButton("-",  command);

        addButton(".",  insert);
        addButton("0",  insert);
        addButton("=",  command);
        addButton("+",  command);

        addButton("1/x", function);
        addButton("sinx",function);
        addButton("cosx", function);
        addButton("Clear", clr);

        add(panel, BorderLayout.SOUTH);

     }

	 private void addButton(String label,ActionListener listener)//加按钮的方法
	 {
	 	JButton button=new JButton(label);
	 	button.addActionListener(listener);
	 	//button.setBackground(Color.blue);
	 	//button.setForeground(Color.white);
	 	panel.add(button);
      }

     class DrawPanel extends JPanel
    {
	 public void paintComponent(Graphics g)
	    {
		 super.paintComponent(g);
		 Graphics2D g2 = (Graphics2D) g;

	  g2.setColor(Color.gray);

		 if (E)//调用画error
		    {
		    	paint_E(g2);
		    }
		 else
		 {

		 if(negative == true)//调用画“-”
		    {
		     paint_negative(g2);
		    }
		 else
		    {
		      if(state)
	   	          {
		          	paint_state(g2);
		           }
	          else
		          {

	         	for(int i=0;i<count&&i<10;i++)//显示数字
	                {
                  Seven_Seg number=new Seven_Seg(display_num[i],i);
                  ArrayList arry=number.show();
                  for(int x=0;x<arry.size();x++)
                      {
                   g2.fill((Polygon)arry.get(x));
                      }
	 	            }
	           	  }
	    	}
   	     }
   	   }
    }




	class Seven_Seg
	{

        private int num;
    	private int P;

	    private int x1[];
        private int y1[];

        private int x2[];
	 	private int y2[];

	 	private int x3[];
	 	private int y3[];

	 	private int x4[];
	 	private int y4[];

	 	private int x5[];
	    private int y5[];

	 	private int x6[];
	 	private int y6[];

	 	private int x7[];
		private int y7[];


	    private ArrayList poly;

	 	public Seven_Seg(int n,int position)
    	{


	 	    num = n;
    		P = position;
    		int x = 20+90*P;//每个数字占的宽度
            int y=20;

    	    x1=new int[]{x,x+5,x+45,x+50,x+45,x+5};
            y1=new int[]{y,y-5,y-5,y,y+5,y+5};

            x2=new int[]{x-2,x+3,x+3,x-2,x-7,x-7};
	        y2=new int[]{y+2,y+7,y+37,y+42,y+37,y+7};

   	 	    x3=new int[]{x-2,x+3,x+3,x-2,x-7,x-7};
	        y3=new int[]{y+46,y+51,y+81,y+86,y+81,y+51};

	 	    x4=new int[]{x,x+5,x+5+40,x+50,x+45,x+5};
	 	    y4=new int[]{y+88,y+83,y+83,y+88,y+93,y+93};

	 	    x5=new int[]{x+52,x+57,x+57,x+52,x+47,x+47};
	        y5=new int[]{y+46,y+51,y+81,y+86,y+81,y+51};

	        x6=new int[]{x+52,x+57,x+57,x+52,x+47,x+47};
	        y6=new int[]{y+2,y+7,y+37,y+42,y+37,y+7};

	        x7=new int[]{x,x+5,x+45,x+50,x+45,x+5};
		    y7=new int[]{y+44,y+39,y+39,y+44,y+49,y+49};


    	    poly=new ArrayList();
    	}

    	public ArrayList show()
	    {
	      Polygon ply1=new Polygon(x1,y1,6);
	      Polygon ply2=new Polygon(x2,y2,6);
	      Polygon ply3=new Polygon(x3,y3,6);
	      Polygon ply4=new Polygon(x4,y4,6);
	      Polygon ply5=new Polygon(x5,y5,6);
	      Polygon ply6=new Polygon(x6,y6,6);
	      Polygon ply7=new Polygon(x7,y7,6);

	      if(num==0)
	       {
	       	   poly.add(ply1);
	       	   poly.add(ply2);
	       	   poly.add(ply3);
	       	   poly.add(ply4);
	       	   poly.add(ply5);
	       	   poly.add(ply6);

	       }
	       else if(num==1)
	        {
	        	poly.add(ply6);
	        	poly.add(ply5);

	        }
	       else if(num==2)
	        {
	        	poly.add(ply1);
	        	poly.add(ply6);
	        	poly.add(ply7);
	        	poly.add(ply3);
	        	poly.add(ply4);

	        }
	       else if(num==3)
	        {
	        	poly.add(ply1);
	        	poly.add(ply6);
	        	poly.add(ply7);
	        	poly.add(ply5);
	        	poly.add(ply4);

	        }
	       else if(num==4)
	        {
	        	poly.add(ply2);
	        	poly.add(ply7);
	        	poly.add(ply6);
	        	poly.add(ply5);

	        }
	       else if(num==5)
	        {
	        	poly.add(ply1);
	        	poly.add(ply2);
	        	poly.add(ply7);
	        	poly.add(ply5);
	        	poly.add(ply4);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -