diff --git a/src/Gui.java b/src/Gui.java new file mode 100644 index 0000000000000000000000000000000000000000..7201dcf78877c3ed22f2dbe47c8579bf0bca3461 --- /dev/null +++ b/src/Gui.java @@ -0,0 +1,115 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +public class Gui extends JFrame implements ActionListener{ + //界面北部 + JPanel jPanel_N=new JPanel(); + JTextField field=new JTextField(); + JButton button_C=new JButton("C"); + + //界面中部 + JPanel jPanel_C=new JPanel(); + + JFrame calculator; + public Gui(String name){ + //设置窗口基本属性 + calculator=new JFrame("name"); + calculator.setVisible(true); + calculator.setSize(GuiConstant.width,GuiConstant.height); + calculator.setLocation(GuiConstant.x,GuiConstant.y); + calculator.setResizable(false); + //calculator.setBackground(new Color(0,0,0)); + calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + //布置各部分界面 + this.Gui_North(); + this.Gui_Center(); + } + + //布置界面北部 + public void Gui_North(){ + calculator.add(jPanel_N,BorderLayout.NORTH); + jPanel_N.add(field); + this.field.setPreferredSize(new Dimension(300,40));//输入框 + jPanel_N.add(button_C); + this.button_C.setForeground(Color.RED);//归零键 + button_C.addActionListener( + new ActionListener(){ + public void actionPerformed(ActionEvent e){ + field.setText(""); + } + } + ); + } + + //布置界面中部 + public void Gui_Center(){ + String button_text[]={"7","8","9","+", + "4","5","6","-", + "1","2","3","*", + ".","0","=","/"}; + calculator.add(jPanel_C,BorderLayout.CENTER); + this.jPanel_C.setLayout(new GridLayout(4,4)); + for(int i=0;i<16;i++){ + JButton button=new JButton(); + jPanel_C.add(button); + button.setText(button_text[i]); + button.addActionListener(this); + if((i+1)%4==0){ + button.setForeground(Color.BLUE); + button.setFont(new Font("粗体",Font.BOLD,25)); + } + else if(i==12||i==14){ + button.setForeground(Color.RED); + button.setFont(new Font("粗体",Font.BOLD,25)); + } + else{ + button.setFont(new Font("粗体",Font.BOLD,20)); + } + } + } + + //事件处理 + String operator=null; + String number_str1=null; + public void actionPerformed(ActionEvent event){ + String str=event.getActionCommand(); + int flag=0; + if(".0123456789".indexOf(str)!=-1){ + this.field.setText(field.getText()+str); + this.field.setHorizontalAlignment(JTextField.RIGHT); + //JOptionPane.showMessageDialog(this,str); + } + else if(str.matches("[\\+\\-*/]{1}")){ + operator=str; + number_str1=this.field.getText(); + this.field.setText(""); + } + else if(str.equals("=")){ + Double number_1=Double.valueOf(number_str1); + Double number_2=Double.valueOf(this.field.getText()); + Double result=null; + switch(operator){ + case "+":result=number_1+number_2; + break; + case "-":result=number_1-number_2; + break; + case "*":result=number_1*number_2; + break; + case "/":if(number_2!=0){ + result=number_1/number_2; + } + else flag=1; + break; + } + if(flag==0){ + this.field.setText(result.toString()); + } + else { + flag=0; + this.field.setText("除数不能为0"); + } + } + } + +} \ No newline at end of file diff --git a/src/GuiConstant.java b/src/GuiConstant.java new file mode 100644 index 0000000000000000000000000000000000000000..6d7728cb4902543c23fc742ff5db30bd0ba9f125 --- /dev/null +++ b/src/GuiConstant.java @@ -0,0 +1,9 @@ +import java.awt.*; +public class GuiConstant{//设定窗口宽高、使窗口居中 + public final static int SCREEN_H=Toolkit.getDefaultToolkit().getScreenSize().height; + public final static int SCREEN_W=Toolkit.getDefaultToolkit().getScreenSize().width; + public final static int height=500; + public final static int width=400; + public final static int x=(SCREEN_W-width)/2; + public final static int y=(SCREEN_H- height)/2; +} \ No newline at end of file diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..6102ec5846189709591bf86721c24a78b3405ea1 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,5 @@ +class Main{ + public static void main(String args[]){ + Gui gui=new Gui("不科学计算器"); + } +} \ No newline at end of file