📄 testcalculator.java
字号:
//package Calculatorpackage;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.lang.*;
import java.lang.String;
import java.lang.Integer;
import java.lang.Math;
class Calculator extends JFrame
{
public Calculator()
{
this.setTitle(" 计算器 - [Java]");
this.setSize(560,360);
this.setLocation(250,150);
initjTextFiled();
initjLabel();
initMenu();
initpanel();
initpanel1();
initpanel2();
initpanel3();
initpanel4();
initpanel5();
initframe();
display=new String("");
operand=0.0;
result=0.0;
operator =0;
equa=equa1=sign0=sign=sign2=sign8=sign16=signAngle=-1;
paste=pul=sub=mul=div=false;
pul1=sub1=mul1=div1=false;
jLabel1.setHorizontalAlignment(JLabel.CENTER);
//创建一个事件监听器
ActionListener action=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Check_actionPerformed(e);
}
};
//创建一个专门监听进制和角度按钮的事件监听器
ActionListener action_angle=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Check_action_angle_Performed(e);
}
};
//为按钮添加事件监听器
num1.addActionListener(action);
num2.addActionListener(action);
num3.addActionListener(action);
num4.addActionListener(action);
num5.addActionListener(action);
num6.addActionListener(action);
num7.addActionListener(action);
num8.addActionListener(action);
num9.addActionListener(action);
num0.addActionListener(action);
point.addActionListener(action);
minus.addActionListener(action);
plus.addActionListener(action);
subtract.addActionListener(action);
multiply.addActionListener(action);
divild.addActionListener(action);
equal.addActionListener(action);
back.addActionListener(action);
ce.addActionListener(action);
cc.addActionListener(action);
a.addActionListener(action);
b.addActionListener(action);
c.addActionListener(action);
d.addActionListener(action);
ee.addActionListener(action);
f.addActionListener(action);
sqrt.addActionListener(action);
ms.addActionListener(action);
mc.addActionListener(action);
mr.addActionListener(action);
mpuls.addActionListener(action);
x1.addActionListener(action);
x2.addActionListener(action);
x3.addActionListener(action);
xy.addActionListener(action);
tan.addActionListener(action);
sin.addActionListener(action);
cos.addActionListener(action);
log.addActionListener(action);
ln.addActionListener(action);
copyItem.addActionListener(action);
pasteItem.addActionListener(action);
item_win.addActionListener(action);
item_java.addActionListener(action);
item_ced.addActionListener(action);
helpItem.addActionListener(action);
aboutItem.addActionListener(action);
garrison16.addActionListener(action_angle);
garrison10.addActionListener(action_angle);
garrison8.addActionListener(action_angle);
garrison2.addActionListener(action_angle);
angle.addActionListener(action_angle);
radian.addActionListener(action_angle);
}
private void initjTextFiled()
{//设置输入框
jTextFiled.setHorizontalAlignment(JTextField.RIGHT);
jTextFiled.setCaretColor(Color.white);
jTextFiled.setEditable(false);
}
private void initjLabel()
{//设置内存标签
jLabel=new JLabel();
jLabel1=new JLabel();
jLabel.setBorder(BorderFactory.createLoweredBevelBorder());
jLabel1.setBorder(BorderFactory.createLoweredBevelBorder());
}
private void initpanel()
{//设置主面板
panel.setLayout(new BorderLayout());
panel.add(panel1,BorderLayout.CENTER);
panel.add(panel3,BorderLayout.SOUTH);
}
private void initpanel1()
{//设置面板1放在主面板中心地面板
panel1.setLayout(new GridLayout(2,1,0,3));
panel1.add(jTextFiled);
panel1.add(panel2); //添加放有进制转换按钮面板
}
private void initpanel2()
{//设置面板2放置进制转换按钮
panel2.setLayout(new GridLayout(1,6,5,5));
//把进制按钮归为一组
ButtonGroup garrGroup=new ButtonGroup();
garrison16=new JRadioButton("十六进制");
panel2.add(garrison16);
garrGroup.add(garrison16);
garrison10=new JRadioButton("十进制");
garrison10.setSelected(true);
panel2.add(garrison10);
garrGroup.add(garrison10);
garrison8=new JRadioButton("八进制");
panel2.add(garrison8);
garrGroup.add(garrison8);
garrison2=new JRadioButton("二进制");
panel2.add(garrison2);
garrGroup.add(garrison2);
//把角度与弧度按钮归为一组
ButtonGroup angleGroup=new ButtonGroup();
angle=new JRadioButton("角度");
panel2.add(angle);
angleGroup.add(angle);
radian=new JRadioButton("弧度");
radian.setSelected(true);
panel2.add(radian);
angleGroup.add(radian);
sign10=1;
signAngle=1;
}
private void initpanel3()
{//设置面板3放置面板4和面板5
panel3.setLayout(new GridLayout(1,2,30,0));
panel3.add(panel4);
panel3.add(panel5);
}
private void initpanel4()
{//设置面板4放置各种函数按钮
panel4.setLayout(new GridLayout(6,3,10,10));
mc=new JButton("MC");
mr=new JButton("MR");
ms=new JButton("MS");
mpuls=new JButton("M+");
ln=new JButton("ln");
x1=new JButton("1/x");
x2=new JButton("x^2");
x3=new JButton("x^3");
xy=new JButton("x^y");
tan=new JButton("tan");
cos=new JButton("cos");
sin=new JButton("sin");
log=new JButton("log");
a=new JButton("A");
b=new JButton("B");
c=new JButton("C");
a.setEnabled(false);
b.setEnabled(false);
c.setEnabled(false);
//设置按钮上字体地颜色
mc.setForeground(Color.RED);
mr.setForeground(Color.RED);
ms.setForeground(Color.RED);
mpuls.setForeground(Color.RED);
x1.setForeground(Color.MAGENTA);
x2.setForeground(Color.MAGENTA);
x3.setForeground(Color.MAGENTA);
xy.setForeground(Color.MAGENTA);
tan.setForeground(Color.MAGENTA);
cos.setForeground(Color.MAGENTA);
sin.setForeground(Color.MAGENTA);
log.setForeground(Color.MAGENTA);
ln.setForeground(Color.MAGENTA);
a.setForeground(Color.BLUE);
b.setForeground(Color.BLUE);
c.setForeground(Color.BLUE);
panel4.add(sin);
panel4.add(jLabel);
panel4.add(jLabel1);
panel4.add(cos);
panel4.add(log);
panel4.add(mc);
panel4.add(tan);
panel4.add(ln);
panel4.add(mr);
panel4.add(xy);
panel4.add(x1);
panel4.add(ms);
panel4.add(x3);
panel4.add(x2);
panel4.add(mpuls);
panel4.add(a);
panel4.add(b);
panel4.add(c);
}
private void initpanel5()
{//设置面板5放置数字按钮
num1=new JButton("1");
num2=new JButton("2");
num3=new JButton("3");
num4=new JButton("4");
num5=new JButton("5");
num6=new JButton("6");
num7=new JButton("7");
num8=new JButton("8");
num9=new JButton("9");
num0=new JButton("0");
point=new JButton(".");
minus=new JButton("+/-");
plus=new JButton("+");
subtract=new JButton("-");
multiply=new JButton("*");
divild=new JButton("/");
equal=new JButton("=");
back=new JButton("BSP");
ce=new JButton("CE");
cc=new JButton("C");
d=new JButton("D");
ee=new JButton("E");
f=new JButton("F");
sqrt=new JButton("Sqrt");
d.setEnabled(false);
ee.setEnabled(false);
f.setEnabled(false);
//设置按钮字体颜色
num0.setForeground(Color.BLUE);
num1.setForeground(Color.BLUE);
num2.setForeground(Color.BLUE);
num3.setForeground(Color.BLUE);
num4.setForeground(Color.BLUE);
num5.setForeground(Color.BLUE);
num6.setForeground(Color.BLUE);
num7.setForeground(Color.BLUE);
num8.setForeground(Color.BLUE);
num9.setForeground(Color.BLUE);
point.setForeground(Color.BLUE);
minus.setForeground(Color.BLUE);
d.setForeground(Color.BLUE);
ee.setForeground(Color.BLUE);
f.setForeground(Color.BLUE);
plus.setForeground(Color.RED);
subtract.setForeground(Color.RED);
multiply.setForeground(Color.RED);
divild.setForeground(Color.RED);
equal.setForeground(Color.RED);
back.setForeground(Color.RED);
ce.setForeground(Color.RED);
cc.setForeground(Color.RED);
sqrt.setForeground(Color.RED);
multiply.setFont(new Font("*",0,16));
subtract.setFont(new Font("-",0,16));
panel5.setLayout(new GridLayout(6,4,10,10));
panel5.add(back);
panel5.add(ce);
panel5.add(cc);
panel5.add(sqrt);
panel5.add(num7);
panel5.add(num8);
panel5.add(num9);
panel5.add(divild);
panel5.add(num4);
panel5.add(num5);
panel5.add(num6);
panel5.add(multiply);
panel5.add(num1);
panel5.add(num2);
panel5.add(num3);
panel5.add(subtract);
panel5.add(num0);
panel5.add(minus);
panel5.add(point);
panel5.add(plus);
panel5.add(d);
panel5.add(ee);
panel5.add(f);
panel5.add(equal);
}
private void initMenu()
{//设置菜单条
this.setJMenuBar(menuBar);
EditMenu = new JMenu( "编辑(E)" );
SeeMenu = new JMenu( "风格(P)" );
HelpMenu = new JMenu( "帮助(H)" );
copyItem=new JMenuItem(EditNames[0]);
pasteItem=new JMenuItem(EditNames[1]);
helpItem=new JMenuItem(HelpNames[0]);
aboutItem=new JMenuItem(HelpNames[1]);
//添加编辑菜单的元素
EditMenu.add(copyItem);
EditMenu.addSeparator();
EditMenu.add(pasteItem);
pasteItem.setEnabled(false);
//添加帮助菜单的元素
HelpMenu.add(helpItem);
HelpMenu.addSeparator();
HelpMenu.add(aboutItem);
//添加风格菜单的元素
ButtonGroup btngroup=new ButtonGroup();
item_win = new JRadioButtonMenuItem( SeeNames[0] );
SeeMenu.add( item_win );
SeeMenu.addSeparator();
btngroup.add(item_win);
item_java = new JRadioButtonMenuItem( SeeNames[1] );
SeeMenu.add( item_java );
SeeMenu.addSeparator();
item_java.setSelected(true);
btngroup.add(item_java);
item_ced = new JRadioButtonMenuItem( SeeNames[2] );
SeeMenu.add( item_ced );
btngroup.add(item_ced);
menuBar.add( EditMenu );
menuBar.add( SeeMenu );
menuBar.add( HelpMenu );
//设置菜单的快捷方式
EditMenu.setMnemonic(KeyEvent.VK_E);
SeeMenu.setMnemonic(KeyEvent.VK_P);
HelpMenu.setMnemonic(KeyEvent.VK_H);
copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.ALT_MASK));
pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.ALT_MASK));
item_win.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,InputEvent.ALT_MASK));
item_java.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_J,InputEvent.ALT_MASK));
item_ced.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.ALT_MASK));
helpItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.ALT_MASK));
aboutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.ALT_MASK));
}
private void initframe()
{//设置框架
this.getContentPane().add(panel);
this.addWindowListener(new WindowCloser()); // 注册监听器对象
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.setResizable(false);
//this.pack();
this.setVisible(true);
}
private void Check_action_angle_Performed(ActionEvent e)
{//条件检测
if(e.getSource()==garrison16)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -