From 16326638c96e8807c1dcbeb0574fc970220fb6e5 Mon Sep 17 00:00:00 2001 From: 86135 <86135@192.168.71.54> Date: Wed, 25 May 2022 18:36:16 +0800 Subject: [PATCH 1/2] JHGFKL --- src/java2022spring/NumberView.java | 118 +++++++++++++++++++++++++++++ src/java2022spring/Test.java | 3 +- 2 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 src/java2022spring/NumberView.java diff --git a/src/java2022spring/NumberView.java b/src/java2022spring/NumberView.java new file mode 100644 index 0000000..c44e2ef --- /dev/null +++ b/src/java2022spring/NumberView.java @@ -0,0 +1,118 @@ +//显示窗体 +package java2022spring; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.*; + +public class NumberView extends JFrame implements ActionListener{ + public JPanel north=new JPanel(); + public JPanel center=new JPanel(); + public JTextField inpuText; + public JButton button; + public String inputNumber1=null; + public String fuHao=null; + + public NumberView() { + init(); + addNorthComponent(); + addCentralButton(); + } + //初始化方法 + public void init(){ + setTitle("计算器"); + setBounds(650,330,500,400); + setLayout(new BorderLayout()); + setResizable(false); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + } + //添加北面控件 + public void addNorthComponent(){ + inpuText=new JTextField(); + inpuText.setPreferredSize(new Dimension(480,50)); + north.add(inpuText); + add(north,BorderLayout.NORTH); + } + //添加中间按钮 + public void addCentralButton() { + String[] BtText= {"%","√","X^2","1/X", + "CE","C","<<<","+/-", + "1", "2", "3", "+", + "4", "5", "6", "-", + "7", "8", "9", "*", + "0", ".", "=", "/", }; + String regex="[\\+\\-*/.=%√C]"; // + center.setLayout(new GridLayout(6,4)); + for(int i=0;i<24;i++) { + button=new JButton(BtText[i]); + button.setText(BtText[i]); + if(BtText[i].matches(regex)|| + BtText[i].equals("CE")|| + BtText[i].equals("<<<")|| + BtText[i].equals("+/-")|| + BtText[i].equals("1/X")|| + BtText[i].equals("X^2")) { + button.setFont(new Font("粗体",Font.BOLD,17)); + button.setForeground(Color.red); + } + + + /*matches() 方法用于检测字符串是否匹配给定的正则表达式。等同于如下代码 + * if(BtText[i].equals("+")|| + BtText[i].equals("-")|| + BtText[i].equals("*")|| + BtText[i].equals("/")|| + BtText[i].equals("=")|| + BtText[i].equals(".")) + { + button.setFont(new Font("粗体",Font.BOLD,20)); + button.setForeground(Color.red); + }*/ + button.addActionListener(this); + center.add(button); + } + add(center,BorderLayout.CENTER); + } + + public void actionPerformed(ActionEvent e) { + String str=e.getActionCommand(); //获取封装在事件中的“命令”字符串 + if("0123456789.".indexOf(str)!=-1) //使数字和小数点显示在文本框上 + { + this.inpuText.setText(inpuText.getText()+str); //保存前面点击的数字 + this.inpuText.setHorizontalAlignment(JTextField.RIGHT); //将文本从文本框的右边开始显示 + } + else if(str.matches("[\\+\\-*/.=%√C]{1}")|| + str.equals("+")||str.equals("-")||str.equals("*")||str.equals("/")) + { + fuHao=str; //fuHao用来存放点击的运算符号 + inputNumber1=this.inpuText.getText(); //inputNumber1用来存放之前点击的数字 + this.inpuText.setText(""); //运算符号不显示在文本框上 + } + else if(str.equals("=")){ + + Double Number1=Double.valueOf(inputNumber1); + Double Number2=Double.valueOf(this.inpuText.getText()); + Double result=null; + switch(fuHao) { + case "+": + result=Number1 + Number2; + break; + case "-": + result=Number1 - Number2; + break; + case "*": + result=Number1 * Number2; + break; + case "/": + if(Number2!=0) { + result=Number1 / Number2; + } + break; + } + this.inpuText.setText(result.toString()); + } + } +} + \ No newline at end of file diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java index 24deb29..4e2fe4b 100644 --- a/src/java2022spring/Test.java +++ b/src/java2022spring/Test.java @@ -2,6 +2,7 @@ package java2022spring; public class Test { public static void main(String[] args) { - System.out.println("Hello world!"); + NumberView carculator=new NumberView(); + carculator.setVisible(true); } } -- Gitee From 0b5a97871001ec635af418a0711f104996f672b7 Mon Sep 17 00:00:00 2001 From: 86135 <86135@192.168.71.54> Date: Wed, 25 May 2022 21:11:13 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/NumberView.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/java2022spring/NumberView.java b/src/java2022spring/NumberView.java index c44e2ef..d7e2ef1 100644 --- a/src/java2022spring/NumberView.java +++ b/src/java2022spring/NumberView.java @@ -69,7 +69,8 @@ public class NumberView extends JFrame implements ActionListener{ { button.setFont(new Font("粗体",Font.BOLD,20)); button.setForeground(Color.red); - }*/ + }此处借鉴了视频 https://www.bilibili.com/video/BV1d54y1s7uC?p=6 中的处理方法 + */ button.addActionListener(this); center.add(button); } @@ -83,8 +84,10 @@ public class NumberView extends JFrame implements ActionListener{ this.inpuText.setText(inpuText.getText()+str); //保存前面点击的数字 this.inpuText.setHorizontalAlignment(JTextField.RIGHT); //将文本从文本框的右边开始显示 } - else if(str.matches("[\\+\\-*/.=%√C]{1}")|| - str.equals("+")||str.equals("-")||str.equals("*")||str.equals("/")) + else if(str.equals("%")||str.equals("√")||str.equals("X^2")|| + str.equals("1/X")||str.equals("CE")||str.equals("C") || + str.equals("<<<")||str.equals("+/-")||str.equals("+")|| + str.equals("-")||str.equals("*")||str.equals("/")) { fuHao=str; //fuHao用来存放点击的运算符号 inputNumber1=this.inpuText.getText(); //inputNumber1用来存放之前点击的数字 -- Gitee