diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..3c8941f06f344233f7d1e4eaec27f7592b3466a2 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding//src/java2022spring/Counting.java=UTF-8 +encoding//src/java2022spring/DataListener.java=UTF-8 diff --git a/src/java2022spring/Counting.java b/src/java2022spring/Counting.java new file mode 100644 index 0000000000000000000000000000000000000000..d2072d00404cfd93c7b3cfe43ef1efa57a49a5a6 --- /dev/null +++ b/src/java2022spring/Counting.java @@ -0,0 +1,86 @@ +package java2022spring; +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +public class Counting extends JFrame{ + String[] keys={"%","CE","C","BACK","1/x","x²","√x","÷","7","8","9","×","4","5","6","-","1","2","3","+","+/-","0",".","="}; + String[] Mkey= {"MC","MR","M+","M-","MS","M_"}; + double number=0.0000; + JMenuBar menuBar=new JMenuBar(); + JMenu menu=new JMenu("选择皮肤"); + JButton button[]=new JButton[keys.length]; + JButton Mbutton[]=new JButton[Mkey.length]; + JPanel keysPanel =new JPanel(); + JPanel textPanel=new JPanel(); + JPanel MPanel=new JPanel(); + Panel newPanel=new Panel(); + JTextField text=new JTextField("0"); + JComboBoxchoiceSkin; + Color color1=new Color(224,205,207); //等于号 + Color color2=new Color(181,196,177); //上圈 + Color color3=new Color(216,202,175); //背景色 + Color color4=new Color(236,236,234); //下圈 + Color color5=new Color(238,238,238); + +public Counting() { //计算器基本设置 + setSize(410,510); + setResizable(true); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + choiceSkin=new JComboBox(); + choiceSkin.setFont(new Font("楷体",Font.BOLD,20)); + choiceSkin.setBackground(color5); + choiceSkin.setForeground(color5); + String skin1= new String("皮肤1"); + String skin2= new String("皮肤2"); + choiceSkin.addItem(skin1); + choiceSkin.addItem(skin2); + SkinListener skinlistener=new SkinListener(); + skinlistener.setView(this); + choiceSkin.addItemListener(skinlistener); + newPanel.setLayout(null); + newPanel.add(choiceSkin); + add(newPanel); + choiceSkin.setBounds(20,50,100,30); + for(int a=0;a<6;a++) { + Mbutton[a]=new JButton(Mkey[a]); + MPanel.add(Mbutton[a]); + Mbutton[a].setBackground(color2); + Mbutton[a].setFont(new Font(Font.SERIF,Font.PLAIN,18)); + } + for(int i=0;i<8;i++) { + button[i]=new JButton(keys[i]); + keysPanel.add(button[i]); + button[i].setBackground(color2); + button[i].setFont(new Font(Font.SERIF,Font.PLAIN,18)); + } + for(int j=8;j=0) { //按了数字或者小数点 + setNumber(str); + } + else if(str.equals(str.equals(view.keys[0]))||str.equals(view.keys[4])||str.equals(view.keys[5])||str.equals(view.keys[6])||str.equals(view.keys[20])) { //只需一个数的运算 + counting1(str); + } + else{ //需要两个数的运算 + counting2(str); + } + } + + + public void BACKKey() { + String getText=view.text.getText(); + int length=getText.length(); + if(length>0) { + getText=getText.substring(0,length-1);//方法来源网络 + view.text.setText(getText); + } + if(length==0) { + view.text.setText("0"); + firstNumber=true; + fuhao="="; + } + } + public void setNumber(String key) { + if(firstNumber) { + view.text.setText(key); + } + else if((key.equals(view.keys[22]))&&(view.text.getText().indexOf(view.keys[22])<0)){ + view.text.setText(view.text.getText()+"."); + }else if(!key.equals(".")) { + view.text.setText(view.text.getText()+key); + } + firstNumber=false; + } + + public void counting1(String key) { + fuhao=key; + if(fuhao.equals(view.keys[0])) {//% + view.number=getNumber()/100; + } + else if(fuhao.equals(view.keys[4])) { // 1/x + reciprocalKey(); + } + else if(fuhao.equals(view.keys[5])) { //x² + view.number=getNumber()*getNumber(); + } + else if(fuhao.equals(view.keys[6])) { //√x + sqrtKey(); + } + else if(fuhao.equals(view.keys[20])) { //+/- + view.number=(-1)*getNumber(); + if (operator) { + // 操作合法的情况下,结果为小数保留小数点后4位,整数正常输出 + long t1; + double t2; + t1 = (long) view.number; + t2 = view.number - t1; + if (t2 == 0) { + view.text.setText(String.valueOf(t1)); + } else { + view.text.setText(String.valueOf(new DecimalFormat("0.0000").format(view.number))); + } + } + firstNumber = true; + operator= true; + } + } + public void reciprocalKey() { + if(view.number==0) { + operator=false; + view.text.setText("分母不能为0"); + } + else view.number=1/getNumber(); + } + + public void sqrtKey() { + if(view.number>=0) { + view.number=Math.sqrt(getNumber()); + } + else view.text.setText("根号内不能为负数"); + } + + public void counting2(String key) { + if(fuhao.equals(view.keys[7])) { //➗ + if(getNumber()==0.0) { + operator=false; + view.text.setText("除数不能为0"); + } + else view.number/=getNumber(); + } + else if(fuhao.equals(view.keys[11])) { //× + view.number*=getNumber(); + } + else if(fuhao.equals(view.keys[15])) { //- + view.number-=getNumber(); + } + else if(fuhao.equals(view.keys[19])) { //+ + view.number+=getNumber(); + } + else if(fuhao.equals(view.keys[23])) { //= + view.number=getNumber(); + } + if(operator) { + long t1; + double t2; + t1=(long)view.number; + t2=view.number-t1; + if (t2 == 0) { + view.text.setText(String.valueOf(t1)); + } else { + view.text.setText(String.valueOf(new DecimalFormat("0.0000").format(view.number))); + } + } + fuhao = key; // 运算符为用户按的按钮 + firstNumber = true; + operator= true; + } + public double getNumber() { + double num=0; + try { + num= Double.valueOf(view.text.getText()).doubleValue(); //来源网络 + } catch (NumberFormatException e) { + } + return num; + } + + } + + diff --git a/src/java2022spring/Main.java b/src/java2022spring/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..aeadcf2181d3fe5231cc5d1ef3f9331d41e90f85 --- /dev/null +++ b/src/java2022spring/Main.java @@ -0,0 +1,7 @@ +package java2022spring; +public class Main { +public static void main(String[] args) { + Counting countKey=new Counting(); + countKey.setTitle("--ⴿӨ"); +} +} \ No newline at end of file diff --git a/src/java2022spring/SkinListener.java b/src/java2022spring/SkinListener.java new file mode 100644 index 0000000000000000000000000000000000000000..55f541f159e204b8fbed97a6ebceac282cf781ba --- /dev/null +++ b/src/java2022spring/SkinListener.java @@ -0,0 +1,47 @@ +package java2022spring; +import java.awt.Color; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +import java2022spring.Counting; +public class SkinListener implements ItemListener{ + public void setView(Counting view) { + this.view=view; + } + Counting view; + Color color=new Color(101,101,101); + Color color2=new Color(224,229,223); + + public void itemStateChanged(ItemEvent e) { + String str=(String)view.choiceSkin.getSelectedItem(); + if(str.equals("Ƥ2")) { + view.keysPanel.setBackground(Color.gray); + for(int i=0;i