?? 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 + -