?? jisuanqi.java
字號:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Jisuanqi extends JFrame {
private Container container;
private GridBagLayout layout;//定義布局
private GridBagConstraints constraints;
private JTextField displayField;//計算結果顯示區
private String lastCommand;//保存+,-,*,/,=命令
private double result;//保存計算結果
private boolean start;//判斷是否為數字的開始
public Jisuanqi() {
super("Jisuanqi");
container=getContentPane();
layout=new GridBagLayout();
container.setLayout(layout);
constraints=new GridBagConstraints();
start=true;
result=0;
lastCommand = "=";
displayField=new JTextField(20);
displayField.setHorizontalAlignment(JTextField.RIGHT);
constraints.gridx=0;
constraints.gridy=0;
constraints.gridwidth=4;
constraints.gridheight=1;
constraints.fill=GridBagConstraints.BOTH;
constraints.weightx=100;
constraints.weighty=100;
layout.setConstraints(displayField,constraints);
container.add(displayField);
ActionListener insert = new InsertAction();
ActionListener command = new CommandAction();
addButton("Backspace",0,1,2,1,insert);
addButton("清零",2,1,2,1,insert);
addButton("7",0,2,1,1,insert);
addButton("8",1,2,1,1,insert);
addButton("9",2,2,1,1,insert);
addButton("除",3,2,1,1,command);
addButton("4",0,3,1,1,insert);
addButton("5",1,3,1,1,insert);
addButton("6",2,3,1,1,insert);
addButton("乘",3,3,1,1,command);
addButton("1",0,4,1,1,insert);
addButton("2",1,4,1,1,insert);
addButton("3",2,4,1,1,insert);
addButton("減",3,4,1,1,command);
addButton("0",0,5,1,1,insert);
addButton("+/-",1,5,1,1,insert);//只顯示"-"號,"+"沒有實用價值
addButton(".",2,5,1,1,insert);
addButton("加",3,5,1,1,command);
addButton("等于",0,6,4,1,command);
setSize(250,250);
setVisible(true);
}
private void addButton(String label,int row,int column,int with,int height,ActionListener listener) {
JButton button=new JButton(label);
constraints.gridx=row;
constraints.gridy=column;
constraints.gridwidth=with;
constraints.gridheight=height;
constraints.fill=GridBagConstraints.BOTH;
button.addActionListener(listener);
layout.setConstraints(button,constraints);
container.add(button);
}//計算器的布局
private class InsertAction implements ActionListener {
public void actionPerformed(ActionEvent event) {
String input=event.getActionCommand();
if (start) {
displayField.setText("");
start=false;
if(input.equals("+/-"))
displayField.setText(displayField.getText()+"-");
}//負號
if(!input.equals("+/-")) {
if(input.equals("Backspace")) {
String str=displayField.getText();
if(str.length()>0) displayField.setText(str.substring(0,str.length()-1));//清楚
}else if(input.equals("清零")) {
displayField.setText("0");
start=true;//清零
}else
displayField.setText(displayField.getText()+input);
}
}
}
private class CommandAction implements ActionListener {
public void actionPerformed(ActionEvent evt) {
String command=evt.getActionCommand();
if(start) {
lastCommand=command;
}else {
calculate(Double.parseDouble(displayField.getText()));
lastCommand=command;
start=true;
}
}
}//事件監聽
public void calculate(double x) {
if (lastCommand.equals("加")) result+= x;
else if (lastCommand.equals("減")) result-=x;
else if (lastCommand.equals("乘")) result*=x;
else if (lastCommand.equals("除")) result/=x;
else if (lastCommand.equals("等于")) result=x;
displayField.setText(""+ result);
}//計算操作
public static void main(String []args) {
Jisuanqi jisuanqi=new Jisuanqi();
jisuanqi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -