📄 calculatorjframe.java
字号:
//【实验6.1】 计算器。
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JPanel;
public class CalculatorJFrame extends JFrame implements ActionListener
{
private JTextField text; //显示计算结果的文本行
private char op; //当前运算符
private float value; //当前计算结果值
private boolean first; //表示是否为数值的第1个数字
public CalculatorJFrame()
{
super("Calculator");
this.setSize(280,210);
this.setLocation(300,240);
this.display(); //显示图形用户界面
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
op='+';
value=0.0f;
first=true;
}
private void display() //图形用户界面
{
text = new JTextField("0.",30);
text.setHorizontalAlignment(JTextField.RIGHT); //设置对齐方式,右对齐
text.setEditable(false); //只能显示,不允许编辑
this.add(text,"North");
JPanel panel = new JPanel(new GridLayout(5,4,5,5));
this.add(panel);
panel.add(new JButton("sqrt"));
panel.add(new JButton("+/-"));
JButton button_backspace = new JButton("Backspace");
panel.add(button_backspace);
button_backspace.addActionListener(this); //为按钮注册单击事件监听器
JButton button_clear = new JButton("C");
panel.add(button_clear);
button_clear.addActionListener(this);
JButton button_seven = new JButton("7");
panel.add(button_seven);
button_seven.addActionListener(this);
JButton button_eight = new JButton("8");
panel.add(button_eight);
button_eight.addActionListener(this);
JButton button_nine = new JButton("9");
panel.add(button_nine);
button_nine.addActionListener(this);
JButton button_division = new JButton("/");
panel.add(button_division);
button_division.addActionListener(this);
JButton button_four = new JButton("4");
panel.add(button_four);
button_four.addActionListener(this);
JButton button_five = new JButton("5");
panel.add(button_five);
button_five.addActionListener(this);
JButton button_six = new JButton("6");
panel.add(button_six);
button_six.addActionListener(this);
JButton button_multiplication = new JButton("*");
panel.add(button_multiplication);
button_multiplication.addActionListener(this);
JButton button_one = new JButton("1");
panel.add(button_one);
button_one.addActionListener(this);
JButton button_two = new JButton("2");
panel.add(button_two);
button_two.addActionListener(this);
JButton button_three = new JButton("3");
panel.add(button_three);
button_three.addActionListener(this);
JButton button_minus = new JButton("-");
panel.add(button_minus);
button_minus.addActionListener(this);
JButton button_zero = new JButton("0");
panel.add(button_zero);
button_zero.addActionListener(this);
JButton button_radixpoint = new JButton(".");
panel.add(button_radixpoint);
button_radixpoint.addActionListener(this);
JButton button_equalto = new JButton("=");
panel.add(button_equalto);
button_equalto.addActionListener(this);
JButton button_plus = new JButton("+");
panel.add(button_plus);
button_plus.addActionListener(this);
}
public void actionPerformed(ActionEvent e) //按钮单击的事件处理方法
{
String current = e.getActionCommand(); //获取按钮标签
if (current.equals("C")) //清除
{
text.setText("0."); //重新设置文本内容
value = 0.0f;
first = true;
return;
}
if (current.equals("Backspace")) //退格
{
String str=text.getText().substring(0,text.getText().length()-1);
text.setText(str);
if (str.equals(""))
{
text.setText("0.");
first = true;
}
return;
}
if (current.compareTo("0")>=0 && current.compareTo("9")<=0 //0~9数字按钮
|| current.equals("."))
{
if (first)
{
text.setText("");
first = false;
}
text.setText(text.getText()+current);
}
else
{
System.out.print(""+value+op+text.getText()+"=");
if (op=='+')
value += Float.parseFloat(text.getText()); //转换成浮点数后运算
if (op=='-')
value -= Float.parseFloat(text.getText());
if (op=='*')
value *= Float.parseFloat(text.getText());
if (op=='/')
value /= Float.parseFloat(text.getText());
System.out.println(""+value);
text.setText(""+value);
op = current.charAt(0); //字符串中取第1个字符
first = true;
}
}
public static void main(String arg[])
{
new CalculatorJFrame();
}
}
/*
程序设计说明如下。
1、也可以使用双精度浮点数,将字符串转换双精度浮点数的方法如下:
Double.parseDouble(text.getText())
2、switch语句的表达式只能是整数,不能是字符,例如,下列语句的逻辑含义正确,但运算结果不正确。
switch (op)
{
case '+': value += Float.parseFloat(text.getText()); //转换成浮点数后运算
case '-': value -= Float.parseFloat(text.getText());
case '*': value *= Float.parseFloat(text.getText());
case '/': value /= Float.parseFloat(text.getText());
}
3、错误处理未做
例如,连接单击当数点【.】或【=】按钮等。
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -