From 2d9d9abb63ba8cc271b9aad4bda8a28b8e517b78 Mon Sep 17 00:00:00 2001 From: pcwo73qhm <3493721163@qq.com> Date: Fri, 12 Apr 2024 22:41:37 +0800 Subject: [PATCH] ADD file via upload --- src/CalculatorWindow.java | 165 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 src/CalculatorWindow.java diff --git a/src/CalculatorWindow.java b/src/CalculatorWindow.java new file mode 100644 index 0000000..6684758 --- /dev/null +++ b/src/CalculatorWindow.java @@ -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); + } +}