📄 calculator.java
字号:
package object.oriented.work;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener {//这里我把JFrame写成Frame,这个错误找了好久
JFrame frame;
private JButton jia = new JButton("+");
private JButton jian = new JButton("-");
private JButton cheng = new JButton("*");
private JButton chu = new JButton("/");
private JButton qiuyi = new JButton("%");
private JButton deng = new JButton("=");
private JButton fu = new JButton("+/-");
private JButton dian = new JButton(".");
private JButton kai = new JButton("sqrt");
private JButton diao = new JButton("1/x");
private JButton aa = new JButton("A");
private JButton bb = new JButton("B");
private JButton cc = new JButton("C");
private JButton dd = new JButton("D");
private JButton ee = new JButton("E");
private JButton ff = new JButton("F");
private TextField k1 = new TextField();
private objConversion convert = new objConversion();
JMenuItem copy, paste, s, t, help, about, me;
JRadioButton sixteen, ten, eight, two;
JButton backspace, ce, c, num0, num1, num2, num3, num4, num5, num6, num7,
num8, num9;
Container cp;
JTextField text;
String copycontent = "";
boolean clickable = true, clear = true;
int all = 0;
double qian;
String fuhao;
int jin = 10, first = 1;
public Calculator() {
setTitle("计算器-杨彩制作");
setSize(400, 300);
setLocation(250, 200);
text = new JTextField(25);
// text.setEnabled(false);
text.setText("0.");
text.setHorizontalAlignment(JTextField.RIGHT);//从右到左
JPanel cp1 = new JPanel();
JPanel cp2 = new JPanel();
JPanel cp3 = new JPanel();
cp = getContentPane();
cp.add(cp1, "North");
cp.add(cp2, "Center");
cp.add(cp3, "South");
cp1.setLayout(new GridLayout(1, 6));
cp2.setLayout(new GridLayout(2, 4));
cp3.setLayout(new GridLayout(6, 6));
sixteen = new JRadioButton("十六进制");
sixteen.setVisible(false);
ten = new JRadioButton("十进制", true);
ten.setVisible(false);
eight = new JRadioButton("八进制");
eight.setVisible(false);
two = new JRadioButton("二进制");
two.setVisible(false);
sixteen.addActionListener(this);
ten.addActionListener(this);
eight.addActionListener(this);
two.addActionListener(this);
ButtonGroup btg = new ButtonGroup();
btg.add(sixteen);
btg.add(ten);
btg.add(eight);
btg.add(two);
JTextField t3 = new JTextField(25);
cp1.add(text);
// text.setEnabled(false);
text.setEditable(false);
text.setBackground(new Color(255, 255, 255));
cp2.add(sixteen);
cp2.add(ten);
cp2.add(eight);
cp2.add(two);
backspace = new JButton("Backspace");
backspace.setForeground(new Color(255, 0, 0));
backspace.addActionListener(this);
ce = new JButton("CE");
ce.setForeground(new Color(255, 0, 0));
ce.addActionListener(this);
c = new JButton("C");
c.setForeground(new Color(255, 0, 0));
c.addActionListener(this);
k1.setVisible(false);
cp2.add(k1);
cp2.add(backspace);
cp2.add(ce);
cp2.add(c);
num0 = new JButton("0");
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");
cp3.add(num7);
num7.addActionListener(this);
cp3.add(num8);
num8.addActionListener(this);
cp3.add(num9);
num9.addActionListener(this);
cp3.add(chu);
chu.setForeground(new Color(255, 0, 0));
chu.addActionListener(this);
cp3.add(kai);
kai.addActionListener(this);
cp3.add(num4);
num4.addActionListener(this);
cp3.add(num5);
num5.addActionListener(this);
cp3.add(num6);
num6.addActionListener(this);
cp3.add(cheng);
cheng.setForeground(new Color(255, 0, 0));
cheng.addActionListener(this);
cp3.add(qiuyi);
qiuyi.addActionListener(this);
cp3.add(num1);
num1.addActionListener(this);
cp3.add(num2);
num2.addActionListener(this);
cp3.add(num3);
num3.addActionListener(this);
cp3.add(jian);
jian.setForeground(new Color(255, 0, 0));
jian.addActionListener(this);
cp3.add(diao);
diao.addActionListener(this);
cp3.add(num0);
num0.addActionListener(this);
cp3.add(fu);
fu.addActionListener(this);
cp3.add(dian);
dian.addActionListener(this);
cp3.add(jia);
jia.setForeground(new Color(255, 0, 0));
jia.addActionListener(this);
cp3.add(deng);
deng.setForeground(new Color(255, 0, 0));
deng.addActionListener(this);
cp3.add(aa);
aa.addActionListener(this);
cp3.add(bb);
bb.addActionListener(this);
cp3.add(cc);
cc.addActionListener(this);
cp3.add(dd);
dd.addActionListener(this);
cp3.add(ee);
ee.addActionListener(this);
cp3.add(ff);
ff.addActionListener(this);
aa.setVisible(false);
bb.setVisible(false);
cc.setVisible(false);
dd.setVisible(false);
ee.setVisible(false);
ff.setVisible(false);
JMenuBar mainMenu = new JMenuBar();
setJMenuBar(mainMenu);
JMenu editMenu = new JMenu("编辑");
JMenu viewMenu = new JMenu("查看");
JMenu helpMenu = new JMenu("帮助");
mainMenu.add(editMenu);
mainMenu.add(viewMenu);
mainMenu.add(helpMenu);
copy = new JMenuItem(" 复制");
paste = new JMenuItem(" 粘贴");
KeyStroke copyks = KeyStroke.getKeyStroke(KeyEvent.VK_C,
Event.CTRL_MASK);
copy.setAccelerator(copyks);//设置退出菜单选项加上快捷键
KeyStroke pasteks = KeyStroke.getKeyStroke(KeyEvent.VK_V,
Event.CTRL_MASK);
paste.setAccelerator(pasteks);//设置退出菜单选项加上快捷键
editMenu.add(copy);
editMenu.add(paste);
copy.addActionListener(this);
paste.addActionListener(this);
t = new JMenuItem("●标准型");
s = new JMenuItem(" 科学型");
viewMenu.add(t);
viewMenu.add(s);
t.addActionListener(this);
s.addActionListener(this);
help = new JMenuItem(" 帮助主题");
about = new JMenuItem(" 关于计算器");
me = new JMenuItem(" 作者主页");
helpMenu.add(help);
helpMenu.add(about);
helpMenu.add(me);
help.addActionListener(this);
about.addActionListener(this);
me.addActionListener(this);
addWindowListener(new WindowDestroyer());//结束窗口
}
public void actionPerformed(ActionEvent e)
{//响应动作代码
if (first == 1)
text.setText("");
first = 0;//第一次把文本框0.清空
Object temp = e.getSource();
if (temp == copy) {
copycontent = text.getText();
}
if (temp == paste) {
text.setText(text.getText() + copycontent);
}
if (temp == t) {//标准
sixteen.setVisible(false);
ten.setVisible(false);
eight.setVisible(false);
two.setVisible(false);
t.setText("●标准型");
s.setText(" 科学型");
aa.setVisible(false);
bb.setVisible(false);
cc.setVisible(false);
dd.setVisible(false);
ee.setVisible(false);
ff.setVisible(false);
}
if (temp == s) {//科学
sixteen.setVisible(true);
ten.setVisible(true);
eight.setVisible(true);
two.setVisible(true);
t.setText(" 标准型");
s.setText("●科学型");
aa.setVisible(true);
bb.setVisible(true);
cc.setVisible(true);
dd.setVisible(true);
ee.setVisible(true);
ff.setVisible(true);
aa.setEnabled(false);
bb.setEnabled(false);
cc.setEnabled(false);
dd.setEnabled(false);
ee.setEnabled(false);
ff.setEnabled(false);
}
if (temp == help) { //打开系统帮助文件 要查资料
try {
String filePath = "C:/WINDOWS/Help/calc.chm";
Runtime.getRuntime().exec("cmd.exe /c " + filePath);
} catch (Exception eeee) {
System.out.println("打开系统的计算器出错");
}
}
if (temp == about) {
JOptionPane
.showMessageDialog(
frame,
" Java计算器\n 杨彩 制作\n\n http://blog.sina.com.cn/m/yangcai",
"关于计算器", JOptionPane.INFORMATION_MESSAGE);
;
}
if (temp == me) {
try {
Process p = Runtime.getRuntime().exec(
"explorer http://blog.sina.com.cn/m/yangcai");
} catch (Exception eeee) {
System.out.println("打开指定网页出错");
}
}
try {
if (temp == sixteen) {
String hex = text.getText();
int inthex = Integer.parseInt(hex, jin);//先把数变为10进制
text.setText(convert.decHex(inthex));
jin = 16;
aa.setEnabled(true);
bb.setEnabled(true);
cc.setEnabled(true);
dd.setEnabled(true);
ee.setEnabled(true);
ff.setEnabled(true);
num2.setEnabled(true);
num3.setEnabled(true);
num4.setEnabled(true);
num5.setEnabled(true);
num6.setEnabled(true);
num7.setEnabled(true);
num8.setEnabled(true);
num9.setEnabled(true);
}
if (temp == eight) {
String oct = text.getText();
int intoct = Integer.parseInt(oct, jin);
text.setText(convert.decOct(intoct));
jin = 8;
aa.setEnabled(false);
bb.setEnabled(false);
cc.setEnabled(false);
dd.setEnabled(false);
ee.setEnabled(false);
ff.setEnabled(false);
num2.setEnabled(true);
num3.setEnabled(true);
num4.setEnabled(true);
num5.setEnabled(true);
num6.setEnabled(true);
num7.setEnabled(true);
num8.setEnabled(false);
num9.setEnabled(false);
}
if (temp == two) {
String bin = text.getText();
int intbin = Integer.parseInt(bin, jin);
text.setText(convert.decBin(intbin));
jin = 2;
aa.setEnabled(false);
bb.setEnabled(false);
cc.setEnabled(false);
dd.setEnabled(false);
ee.setEnabled(false);
ff.setEnabled(false);
num2.setEnabled(false);
num3.setEnabled(false);
num4.setEnabled(false);
num5.setEnabled(false);
num6.setEnabled(false);
num7.setEnabled(false);
num8.setEnabled(false);
num9.setEnabled(false);
}
if (temp == ten) {
String dec = text.getText();
int intdec = Integer.parseInt(dec, jin);
// text.setText(convert.decDec(intdec)); //本句会把123变成321
text.setText(intdec + "");
jin = 10;
aa.setEnabled(false);
bb.setEnabled(false);
cc.setEnabled(false);
dd.setEnabled(false);
ee.setEnabled(false);
ff.setEnabled(false);
num2.setEnabled(true);
num3.setEnabled(true);
num4.setEnabled(true);
num5.setEnabled(true);
num6.setEnabled(true);
num7.setEnabled(true);
num8.setEnabled(true);
num9.setEnabled(true);
}
} catch (Exception ee) {
System.out.println("转换出错,可能你没有输入任何字符");
text.setText("转换出错");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -