📄 calcultor.java
字号:
/*
* Calcultor.java
*
* Created on 2007年3月19日, 下午6:52
*/
/**
*
* @author Administrator
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Calcultor
extends JFrame
implements ActionListener {
/** Creates new form Calcultor */
public Calcultor() {
initComponents();
this.setVisible(true);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
private void initComponents() {
cp = new javax.swing.JPanel();
bds = new javax.swing.JLabel();
intf = new javax.swing.JLabel();
jdb = new javax.swing.JButton();
num = new javax.swing.JPanel();
jb7 = new javax.swing.JButton();
jmb = new javax.swing.JMenuBar();
bj = new javax.swing.JMenu();
copy = new javax.swing.JMenuItem();
bz = new javax.swing.JMenu();
jsq = new javax.swing.JMenuItem();
zn = new javax.swing.JMenuItem();
getContentPane().setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("\u8ba1\u7b97\u5668 by\u601d\u51e1");
setResizable(false);
cp.setLayout(null);
bds.setBackground(java.awt.Color.white);
bds.setToolTipText("<html><body><body text=5>\u8fd9\u513f\u653e\u8ba1\u7b97\u8868\u8fbe\u5f0f\u3002<tr>\u4e0b\u8fb9\u663e\u793a\u7ed3\u679c</body></html>");
bds.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.
border.EtchedBorder.RAISED, null, new java.awt.Color(204, 204, 204)));
bds.setOpaque(true);
cp.add(bds);
bds.setBounds(10, 10, 220, 20);
intf.setBackground(java.awt.Color.white);
intf.setToolTipText("<HTML>\u7528\u4e0b\u9762\u7684\u6309\u94ae\u8f93\u5165\u8868\u8fbe\u5f0f<tr>\u786e\u8ba4\u65e0\u8bef\u540e\u70b9\u51fb\u201cOK\u201d<tr>\u8fd9\u91cc\u5c06\u663e\u793a\u7ed3\u679c\u3002<tr>\u8ba1\u7b97\u5b8c\u6bd5\uff0c\u8bf7\u70b9\u51fb\u201cCE\u201d\u3002</html>");
intf.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.
border.EtchedBorder.RAISED, null, new java.awt.Color(204, 204, 204)));
intf.setOpaque(true);
cp.add(intf);
intf.setBounds(10, 30, 220, 40);
jdb.setText("CE");
jdb.setToolTipText("CE");
jdb.addActionListener(this);
cp.add(jdb);
jdb.setBounds(240, 10, 50, 60);
getContentPane().add(cp);
cp.setBounds(10, 0, 300, 80);
num.setLayout(new java.awt.GridLayout(4, 4, 3, 3));
jb7.setText("7");
jb7.setToolTipText("7");
jb7.addActionListener(this);
num.add(jb7);
for (int i = 0; i < 19; i++) {
l = m[i].indexOf(" ");
n = m[i].substring(0, l);
jb7 = new JButton(n);
jb7.setToolTipText(m[i].substring(l + 1));
jb7.addActionListener(this);
if (i < 18) {
num.add(jb7);
}
}
num.add(jb7);
getContentPane().add(num);
num.setBounds(20, 80, 280, 140);
bj.setText("\u7f16\u8f91");
copy.setText("\u4fdd\u5b58\u7ed3\u679c");
copy.addActionListener(this);
bj.add(copy);
jmb.add(bj);
bz.setText("\u5e2e\u52a9");
jsq.setText("\u5173\u4e8e\u8ba1\u7b97\u5668");
jsq.addActionListener(this);
bz.add(jsq);
zn.setText("\u64cd\u4f5c\u6307\u5357");
zn.addActionListener(this);
bz.add(zn);
jmb.add(bz);
setJMenuBar(jmb);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().
getScreenSize();
setBounds( (screenSize.width - 324) / 2, (screenSize.height - 291) / 2, 324,
291);
} // </editor-fold>//GEN-END:initComponents
// intf.setForeground(Color.BLACK);
// str=intf.getText();
// str+=8;
// intf.setText(str);
// str="";// TODO 将在此处添加您的处理代码:
//show message1
private void jsq() {
JOptionPane.showMessageDialog(this, "<html>本计算机是由思凡科技创新小组创作。:<table><tr>" +
"\t成员如下<ul><li>王 飞 肖超伟</li><li>宋广超 王京富</li><li>王 飞 宋 矿</li>" +
" <tr>组长:王 飞" +
"<tr>联系方式:15969712195 " +
"<tr>Email:bingdao@mail.sdu.edu.cn<table></html>");
// l.setIcon(new ImageIcon("img28.jpg"));
// TODO 将在此处添加您的处理代码:
}
//show message2
private void zn() {
JOptionPane.showMessageDialog(this, "请参照按钮上的提示来操作!!!");
}
private void jbe() {
str = intf.getText();
s = bds.getText();
bds.setText(s + str);
str = "";
intf.setText(str);
s = bds.getText();
houzui m = new houzui();
String ds = m.outResult(s + " &");
if (ds.charAt(0) == 'E') {
intf.setForeground(Color.RED);
//ds+=" (计算完毕,请点击“CE”。)";
}
intf.setText(ds);
exe = true;
}
private void jdb() {
intf.setText("");
bds.setText("");
exe = false;
// TODO 将在此处添加您的处理代码:
}
private void jbb() {
if(e()==-1)return;
str = intf.getText();
s = bds.getText();
if (str.length() > 0) {
str = str.substring(0, str.length() - 1);
intf.setText(str);
}
else if (s.length() > 0) {
if (s.charAt(s.length() - 1) != ' ') {
s = s.substring(0, s.length() - 1);
}
else {
s = s.substring(0, s.length() - 3);
}
bds.setText(s);
}
s = "";
// TODO 将在此处添加您的处理代码:
}
private void jbd() {
e();
str = intf.getText();
str += ".";
intf.setText(str);
str = ""; // TODO 将在此处添加您的处理代码:
}
int e(){
if(intf.getText().equals("输负数要先输数字!!!"))
{intf.setText("");return -1;}
return 0;
}
private void jbC() {
e();
str = intf.getText();
char l=' ';
if(str.length()==0){
intf.setText("输负数要先输数字!!!");
return;
}
else l=str.charAt(0);
if (l == '-') {
str = str.substring(1);
}
else if(Character.isDigit(l)){
str = '-' + str;
}
intf.setText(str);
s = ""; // TODO 将在此处添加您的处理代码:
}
private void copy() {
File file = new File("m\\result.txt");
PrintWriter out = null;
try {
out =
new PrintWriter(new FileOutputStream(file, true));
}
catch (FileNotFoundException ex) {
ex.printStackTrace();
}
s = bds.getText();
str = intf.getText();
out.println(s + " = " + str);
s = "";
str = "";
out.close();
JOptionPane.showMessageDialog(this, "结果保存在该计算器所在的文件夹内result.txt文件中。");
// TODO 将在此处添加您的处理代码:
}
// public static void main(String[] args) {
// Calcultor m=new Calcultor();
// m.setVisible(true);
// }
public void actionPerformed(ActionEvent e) {
String d = e.getActionCommand();
char f = d.charAt(0);
if (d.equals("保存结果")) {
copy();
}
else if (d.equals("关于计算器")) {
jsq();
}
else if (d.equals("操作指南")) {
zn();
}
if (exe && f != 'C') {
intf.setText("请先电击CE。");
}
else if (f == 'C') {
jdb();
intf.setForeground(null);
}
else {
if (Character.isDigit(f)) {
e();
str = intf.getText();
str += d;
intf.setText(str);
str = "";
}
else if (f == '(' || f == ')' || f == '+' || f == '-' || f == '*' ||
f == '/') {
if (d.length() > 1 && d.charAt(1) == '/') {
jbC();
}
else {
str = intf.getText();
str += " " + f + " ";
s = bds.getText();
bds.setText(s + str);
str = "";
intf.setText(str);
s = "";
}
}
else if (f == '.') {
jbd();
}
else if (f == '<') {
jbb();
}
else if (f == 'O') {
jbe();
}
}
}
/**
* @param args the command line arguments
*/
// 变量声明 - 不进行修改//GEN-BEGIN:variables
private javax.swing.JLabel bds;
private javax.swing.JMenu bj;
private javax.swing.JMenu bz;
private javax.swing.JMenuItem copy;
private javax.swing.JPanel cp;
private javax.swing.JLabel intf;
private javax.swing.JButton jb7;
private javax.swing.JButton jdb;
private javax.swing.JMenuBar jmb;
private javax.swing.JMenuItem jsq;
private javax.swing.JPanel num;
private javax.swing.JMenuItem zn;
// 变量声明结束//GEN-END:variables
String str = "", s = "";
//用来标示button的数组,并赋值
String[] m = new String[19];
{
m[0] = "8 8";
m[1] = "9 9";
m[2] = "( 左括号 (";
m[3] = ") 右括号 )";
m[4] = "4 4";
m[5] = "5 5";
m[6] = "6 6";
m[7] = "* 乘号 *";
m[8] = "/ 除号 /";
m[9] = "1 1";
m[10] = "2 2";
m[11] = "3 3";
m[12] = "+ 加号 +";
m[13] = "- 减号 -";
m[14] = "0 0";
m[15] = "+/- <html>先写数字后按此按钮,<tr>改变数据正负号</html>";
m[16] = ". 小数点 .";
m[17] = "<= 后退";
m[18] = "OK 确认";
}
//赋值结束
String n = ""; //取出button标签
int l = 0; //用来装第一个空格的位置
boolean exe = false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -