📄 calculator2.java
字号:
package com.Calculator2;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class Calculator2 {
/*
* 声明各内部组件
*/
private Frame frame = null;
private Panel upPanel = null;
private Panel downPanel = null;
private BorderLayout mainLayout = null;
private GridLayout layout = null;
private Button button0 = null;
private Button button1 = null;
private Button button2 = null;
private Button button3 = null;
private Button button4 = null;
private Button button5 = null;
private Button button6 = null;
private Button button7 = null;
private Button button8 = null;
private Button button9 = null;
private Button buttonMul = null;
private Button buttonDiv = null;
private Button buttonAdd = null;
private Button buttonSub = null;
private Button buttonDot = null;
private Button buttonVal = null;
private TextField text = null;
MouseListenerC ml = null;
MouseListenerO mo = null;
/*
* 记录text的值
*/
private double textBef = 0.0;
private double textAft = 0.0;
/*
* qingling 记录运算后如果继续输入数据就得情零的标志
*/
private boolean qingling = false;
/*
* yuansuan 记录输入运算符的标志
*/
private boolean yunsuan = false;
/*
* operator 记录运算符
*/
private String operator = null;
/*
* 声明一个方法来转换string到int,因为text里的数据都是String的
*/
private double toDouble(String text) {
try {
return Double.parseDouble(text);
} catch (Exception e) {
e.printStackTrace(System.err);
}
return 0.0;
}
/*
* 做一个方法来存取输入的数据
*/
private void store(String t) {
if (!yunsuan) {
textBef = toDouble(t);
} else {
textAft = toDouble(t);
}
}
/*
* 做一个初始化组件的方法initFrame()
*/
private void initFrame() {
{
frame = new Frame("Calculator");
upPanel = new Panel();
downPanel = new Panel();
mainLayout = new BorderLayout();
layout = new GridLayout(4, 4);
button0 = new Button("0");
button1 = new Button("1");
button2 = new Button("2");
button3 = new Button("3");
button4 = new Button("4");
button5 = new Button("5");
button6 = new Button("6");
button7 = new Button("7");
button8 = new Button("8");
button9 = new Button("9");
buttonMul = new Button("*");
buttonDiv = new Button("/");
buttonSub = new Button("-");
buttonAdd = new Button("+");
buttonDot = new Button(".");
buttonVal = new Button("=");
text = new TextField(30);
text.setForeground(Color.RED);
ml = this.new MouseListenerC();
mo = this.new MouseListenerO();
// text.setAlignment(text.RIGHT);
}
{
frame.setSize(250, 250);
frame.setLayout(mainLayout);
frame.add(upPanel, BorderLayout.NORTH);
frame.add(downPanel, BorderLayout.CENTER);
downPanel.setLayout(layout);
upPanel.add(text);
downPanel.add(button0);
downPanel.add(button1);
downPanel.add(button2);
downPanel.add(button3);
downPanel.add(button4);
downPanel.add(button5);
downPanel.add(button6);
downPanel.add(button7);
downPanel.add(button8);
downPanel.add(button9);
downPanel.add(buttonDot);
downPanel.add(buttonMul);
downPanel.add(buttonDiv);
downPanel.add(buttonAdd);
downPanel.add(buttonSub);
downPanel.add(buttonVal);
}
{
frame.addWindowListener(new WindowListener() {
public void windowActivated(WindowEvent e) {
// TODO 自动生成方法存根
}
public void windowClosed(WindowEvent e) {
// TODO 自动生成方法存根
}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {
// TODO 自动生成方法存根
}
public void windowDeiconified(WindowEvent e) {
// TODO 自动生成方法存根
}
public void windowIconified(WindowEvent e) {
// TODO 自动生成方法存根
}
public void windowOpened(WindowEvent e) {
// TODO 自动生成方法存根
}
});
button0.addMouseListener(ml);
button1.addMouseListener(ml);
button2.addMouseListener(ml);
button3.addMouseListener(ml);
button4.addMouseListener(ml);
button5.addMouseListener(ml);
button6.addMouseListener(ml);
button7.addMouseListener(ml);
button8.addMouseListener(ml);
button9.addMouseListener(ml);
buttonDot.addMouseListener(ml);
buttonMul.addMouseListener(mo);
buttonDiv.addMouseListener(mo);
buttonAdd.addMouseListener(mo);
buttonSub.addMouseListener(mo);
buttonVal.addMouseListener(mo);
}
{
frame.setVisible(true);
}
}
public Calculator2() {
initFrame();
}
/*public static void main(String[] args) {
Calculator cal = new Calculator();
}*/
/*
* 以下是监听器的设计
*/
class MouseListenerC implements MouseListener {
public void mouseClicked(MouseEvent e) {
Button b = (Button) e.getSource();
String temp = b.getLabel();
/*
* 看是否清零,就是看是否运算过........
*/
if (!qingling) {
temp = text.getText() + temp;
text.setText(temp);
store(temp);
} else {
text.setText(temp);
store(temp);
qingling = false;
}
}
public void mouseEntered(MouseEvent e) {
// TODO 自动生成方法存根
}
public void mouseExited(MouseEvent e) {
// TODO 自动生成方法存根
}
public void mousePressed(MouseEvent e) {
// TODO 自动生成方法存根
}
public void mouseReleased(MouseEvent e) {
// TODO 自动生成方法存根
}
}
class MouseListenerO implements MouseListener {
public void mouseClicked(MouseEvent e) {
Button b = (Button) e.getSource();
String temp = b.getLabel();
if (temp.equals("=")) {
char t = operator.charAt(0);
switch (t) {
case '+':
textBef = textBef + textAft;
text.setText(textBef + "");
yunsuan = false;
break;
case '-':
textBef = textBef - textAft;
text.setText(textBef + "");
yunsuan = false;
break;
case '*':
textBef = textBef * textAft;
text.setText(textBef + "");
yunsuan = false;
break;
case '/':
textBef = textBef / textAft;
text.setText(textBef + "");
yunsuan = false;
break;
}
qingling = true;
} else {
operator = temp;
yunsuan = true;
text.setText("");
}
}
public void mouseEntered(MouseEvent e) {
// TODO 自动生成方法存根
}
public void mouseExited(MouseEvent e) {
// TODO 自动生成方法存根
}
public void mousePressed(MouseEvent e) {
// TODO 自动生成方法存根
}
public void mouseReleased(MouseEvent e) {
// TODO 自动生成方法存根
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -