【JAVA】作业---计算器

    xiaoxiao2022-07-04  161

    import java.awt.*; import java.util.List; import java.awt.event.*; import java.util.*; import javax.swing.*; public class MyComputer extends JFrame{ public static int MCPT_WIDTH = 480; public static int MCPT_HEIGHT = 520; private String[] keys = {"1","2","3","4","5","6","7","8","9","0","清零","平方","+","-","*","/"}; public int key_value = 0; TextField txf = new TextField(); int resultnum =0; String text1 = ""; String text2 = ""; String operate = ""; String str = null; public static void main(String[] args) { new MyComputer().start(); } public void start() { setBounds(600, 200, MCPT_WIDTH, MCPT_HEIGHT); setTitle("MyComputer"); setVisible(true); setResizable(false); Label lbl = new Label("计算结果:"); Panel p4 = new Panel(new BorderLayout(3,5)); Panel p1 = new Panel(); Panel p2 = new Panel(); Panel p3 = new Panel(); addWindowListener(new FrameMonitor());//添加监听器 add(p1,BorderLayout.CENTER); add(p4,BorderLayout.NORTH); txf.addActionListener(new TextFieldMonitor()); p4.add(lbl,BorderLayout.NORTH);//添加frame标签 p4.add(txf,BorderLayout.SOUTH);//添加textfield p1.add(p2); p1.add(p3); p2.setLayout(new GridLayout(4,3,3,3)); p3.setLayout(new GridLayout(4,1,3,3)); //将JButton们 写入arraylist List<JButton> buttonlist = new ArrayList<JButton>();//报错:import错误,将util.list写成awt.list for(int i = 0;i<keys.length;i++) {//如果让i从1开始,会报错,why? buttonlist.add(new JButton(keys[i]));//用循环遍历字符串数组keys为button命名 p2.add(buttonlist.get(i)); //注意角标! if(i>11) { p3.add(buttonlist.get(i)); } buttonlist.get(i).addActionListener(new ButtonMonitor()); } pack(); } //添加window监听,即能关闭窗口 private class FrameMonitor extends WindowAdapter{ public void windowClosing(WindowEvent e) { System.exit(0); } } //添加button监听,实现运算功能 class ButtonMonitor implements ActionListener { @Override public void actionPerformed(ActionEvent e) { //此方法能显示出button上面的值,但是格式是String且不能转化成int //强制将String转换int,用Integer.parseInt(s)方法 str = e.getActionCommand(); if(str=="清零") { txf.setText("0"); } //如果按下数字按钮 if("123456789".indexOf(str)>=0) { txf.setText(str); option(); } else { if(str =="+") { operate = "+"; option(); System.out.println("operate:"+operate); } if(str =="-") { operate = "-"; option(); System.out.println("operate:"+operate); } if(str =="*") { operate = "*"; option(); System.out.println("operate:"+operate); } if(str =="/") { operate = "/"; option(); System.out.println("operate:"+operate); } if(str =="平方") { resultnum = Integer.parseInt(txf.getText()); operate = "平方"; option(); txf.setText(resultnum+""); System.out.println("operate:"+operate); } resultnum = Integer.parseInt(txf.getText()); System.out.println("resultnum1:"+resultnum); } } //调用option方法才会接收button上的数字:利用时间差实现一个参数resultnum计算。 public void option(){ if(operate=="+") { resultnum += Integer.parseInt(txf.getText()); System.out.println("resultnum:"+resultnum); } if(operate=="-") { resultnum -= Integer.parseInt(txf.getText()); System.out.println("resultnum:"+resultnum); } if(operate=="*") { resultnum *= Integer.parseInt(txf.getText()); System.out.println("resultnum:"+resultnum); } if(operate=="/") { resultnum /= Integer.parseInt(txf.getText()); System.out.println("resultnum:"+resultnum); } if(operate=="平方") { resultnum *= resultnum; //System.out.println("resultnum:"+resultnum); } } } class TextFieldMonitor implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { txf.setText(""+resultnum); } } }
    最新回复(0)