📄 calculator.java
字号:
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 + -