parent
88cc7961f8
commit
b864d89714
@ -0,0 +1,165 @@
|
|||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class CalculatorWindow extends JFrame {
|
||||||
|
Computer computer;
|
||||||
|
JButton numberButtons[];
|
||||||
|
JButton operatorButton[];
|
||||||
|
//加减乘除按钮
|
||||||
|
JButton dot,fu,back,equation,clear,sqrt,reciprocal;
|
||||||
|
JTextField resultShow;
|
||||||
|
//显示计算结果
|
||||||
|
JTextField showTempResult;
|
||||||
|
//临时结果
|
||||||
|
JLabel showOperator;
|
||||||
|
//运算符
|
||||||
|
JTextField showDataItem;
|
||||||
|
//当前参与运算的数据项
|
||||||
|
JTextArea computerProcess;
|
||||||
|
//计算步骤
|
||||||
|
JButton saveBtn,copyBtn,clearTextBtn;
|
||||||
|
public CalculatorWindow() throws HeadlessException {
|
||||||
|
computer=new Computer();
|
||||||
|
initView();//设置界面
|
||||||
|
initActionListener();//注册监视器
|
||||||
|
}
|
||||||
|
public void initView(){
|
||||||
|
this.setTitle("计算器");
|
||||||
|
JPanel left,right;
|
||||||
|
resultShow=new JTextField(10);
|
||||||
|
resultShow.setHorizontalAlignment(JTextField.LEFT);
|
||||||
|
resultShow.setForeground(Color.blue);
|
||||||
|
resultShow.setFont(new Font("TimesRoman",Font.BOLD,14));
|
||||||
|
resultShow.setEditable(false);
|
||||||
|
resultShow.setBackground(Color.lightGray);
|
||||||
|
|
||||||
|
showTempResult=new JTextField();
|
||||||
|
showTempResult.setHorizontalAlignment(JTextField.RIGHT);
|
||||||
|
showTempResult.setFont(new Font("Arial",Font.BOLD,14));
|
||||||
|
showTempResult.setEditable(false);
|
||||||
|
|
||||||
|
showOperator=new JLabel();
|
||||||
|
showOperator.setHorizontalAlignment(JTextField.CENTER);
|
||||||
|
showOperator.setFont(new Font("Arial",Font.BOLD,18));
|
||||||
|
|
||||||
|
showDataItem=new JTextField();
|
||||||
|
showDataItem.setHorizontalAlignment(JTextField.LEFT);
|
||||||
|
showDataItem.setBackground(Color.white);
|
||||||
|
showDataItem.setFont(new Font("Arial",Font.BOLD,14));
|
||||||
|
showDataItem.setEditable(false);
|
||||||
|
|
||||||
|
computerProcess=new JTextArea();
|
||||||
|
computerProcess.setEditable(false);
|
||||||
|
computerProcess.setFont(new Font("宋体",Font.PLAIN,14));
|
||||||
|
|
||||||
|
numberButtons=new JButton[10];
|
||||||
|
for (int i = 0; i <=9; i++) {
|
||||||
|
numberButtons[i]=new JButton(" "+i);
|
||||||
|
numberButtons[i].setFont(new Font("Arial",Font.BOLD,20));
|
||||||
|
}
|
||||||
|
operatorButton=new JButton[4];
|
||||||
|
String s[]={"+","-","*","/"};
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
operatorButton[i]=new JButton(s[i]);
|
||||||
|
operatorButton[i].setFont(new Font("Arial",Font.BOLD,20));
|
||||||
|
}
|
||||||
|
dot=new JButton(".");
|
||||||
|
fu=new JButton("+/-");
|
||||||
|
equation=new JButton("=");
|
||||||
|
back=new JButton("退格");
|
||||||
|
clear=new JButton("C");
|
||||||
|
sqrt=new JButton("sqrt");
|
||||||
|
reciprocal=new JButton("1/x");
|
||||||
|
saveBtn=new JButton("保存");
|
||||||
|
copyBtn=new JButton("复制");
|
||||||
|
clearTextBtn=new JButton("清除");
|
||||||
|
|
||||||
|
left=new JPanel();
|
||||||
|
right=new JPanel();
|
||||||
|
|
||||||
|
//左边布局
|
||||||
|
left.setLayout(new BorderLayout());
|
||||||
|
//BorderLayout 容器分为五个部分(东南西北中),每部分只能包含一个组件
|
||||||
|
JPanel centerInLeft=new JPanel();
|
||||||
|
Box box=Box.createHorizontalBox();
|
||||||
|
//创建水平排列组件的Box
|
||||||
|
box.add(showTempResult);
|
||||||
|
box.add(showOperator);
|
||||||
|
box.add(showDataItem);
|
||||||
|
left.add(box,BorderLayout.NORTH);
|
||||||
|
left.add(centerInLeft,BorderLayout.CENTER);
|
||||||
|
centerInLeft.setLayout(new GridLayout(5,5));
|
||||||
|
//GridLayout 网格布局5行5列
|
||||||
|
centerInLeft.add(numberButtons[1]);
|
||||||
|
centerInLeft.add(numberButtons[2]);
|
||||||
|
centerInLeft.add(numberButtons[3]);
|
||||||
|
centerInLeft.add(operatorButton[0]);
|
||||||
|
centerInLeft.add(back);
|
||||||
|
|
||||||
|
centerInLeft.add(numberButtons[4]);
|
||||||
|
centerInLeft.add(numberButtons[5]);
|
||||||
|
centerInLeft.add(numberButtons[6]);
|
||||||
|
centerInLeft.add(operatorButton[1]);
|
||||||
|
centerInLeft.add(clear);
|
||||||
|
|
||||||
|
centerInLeft.add(numberButtons[7]);
|
||||||
|
centerInLeft.add(numberButtons[8]);
|
||||||
|
centerInLeft.add(numberButtons[9]);
|
||||||
|
centerInLeft.add(operatorButton[2]);
|
||||||
|
centerInLeft.add(reciprocal);
|
||||||
|
|
||||||
|
centerInLeft.add(numberButtons[0]);
|
||||||
|
centerInLeft.add(fu);
|
||||||
|
centerInLeft.add(dot);
|
||||||
|
centerInLeft.add(operatorButton[3]);
|
||||||
|
centerInLeft.add(sqrt);
|
||||||
|
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
centerInLeft.add(new JLabel());
|
||||||
|
}
|
||||||
|
centerInLeft.add(equation);
|
||||||
|
|
||||||
|
//右边布局
|
||||||
|
right.setLayout(new BorderLayout());
|
||||||
|
right.add(resultShow,BorderLayout.NORTH);
|
||||||
|
right.add(new JScrollPane(computerProcess),BorderLayout.CENTER);
|
||||||
|
JPanel southInRight=new JPanel();
|
||||||
|
southInRight.add(saveBtn);
|
||||||
|
southInRight.add(copyBtn);
|
||||||
|
southInRight.add(clearTextBtn);
|
||||||
|
right.add(southInRight,BorderLayout.SOUTH);
|
||||||
|
|
||||||
|
JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,left,right);
|
||||||
|
//split 左右布局的分割面板
|
||||||
|
add(split,BorderLayout.CENTER);
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置 点击关闭退出程序
|
||||||
|
setVisible(true);
|
||||||
|
setBounds(200,200,788,258);//设置位置大小
|
||||||
|
validate();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
public void initActionListener(){
|
||||||
|
HandleDight hd=new HandleDight(this);
|
||||||
|
for (int i = 0; i <= 9; i++) {
|
||||||
|
numberButtons[i].addActionListener(hd);
|
||||||
|
}
|
||||||
|
dot.addActionListener(hd);
|
||||||
|
|
||||||
|
HandleOperator ho=new HandleOperator(this);
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
operatorButton[i].addActionListener(ho);
|
||||||
|
}
|
||||||
|
fu.addActionListener(new HandleFu(this));
|
||||||
|
sqrt.addActionListener(new HandleSqrt(this));
|
||||||
|
reciprocal.addActionListener(new HandleReciprocal(this));
|
||||||
|
back.addActionListener(new HandleBack(this));
|
||||||
|
equation.addActionListener(new HandleEquation(this));
|
||||||
|
clear.addActionListener(new HandleClear(this));
|
||||||
|
HandleFile hf=new HandleFile(this);
|
||||||
|
saveBtn.addActionListener(hf);
|
||||||
|
copyBtn.addActionListener(hf);
|
||||||
|
clearTextBtn.addActionListener(hf);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue