1、编写程序,包括一个标签、一个文本框和一个按钮,但用户单击时,程序把文本框中的内容复制到标签中。
2、编写Applet程序实现一个计算器,包括10个数字(0-9)按钮和4个运算符(+ 、- 、* 、/ )按钮以及等号和清空两个辅助 按钮,还有一个显示输入的文本框。试分别用Borderlayout和GridLayout实现。

解决方案 »

  1.   

    第一题如下     第二题麻烦,要求过分(为什么非要用Borderlayout和GridLayout),技术落后(为什么非要Applet)
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.SpringLayout;
    import javax.swing.UIManager;public class Copy extends JFrame
    {
        private SpringLayout layout = new SpringLayout();
        
        private JLabel label = new JLabel();    private JTextField textField = new JTextField();
        
        private JButton btnCopy = new JButton();    private static final long serialVersionUID = -8335262202165449039L;    public static void main(String args[])
        {
            try
            {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                new Copy().setVisible(true);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }    public Copy()
        {
            super();
            getContentPane().setLayout(layout);
            setSize(445, 175);
            setTitle("Copy");
            setLocationRelativeTo(null);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            initUI();
        }
        
        private void initUI()
        {
            label.setBackground(Color.LIGHT_GRAY);
            label.setOpaque(true);
            btnCopy.setText("Copy");
            getRootPane().setDefaultButton(btnCopy);
            
            layout.putConstraint(SpringLayout.EAST, textField, -17, SpringLayout.EAST, getContentPane());
            layout.putConstraint(SpringLayout.WEST, textField, 17, SpringLayout.WEST, getContentPane());
            layout.putConstraint(SpringLayout.SOUTH, textField, 45, SpringLayout.NORTH, getContentPane());
            layout.putConstraint(SpringLayout.NORTH, textField, 23, SpringLayout.NORTH, getContentPane());
            
            layout.putConstraint(SpringLayout.EAST, label, -17, SpringLayout.EAST, getContentPane());
            layout.putConstraint(SpringLayout.WEST, label, 17, SpringLayout.WEST, getContentPane());
            layout.putConstraint(SpringLayout.SOUTH, label, 87, SpringLayout.NORTH, getContentPane());
            layout.putConstraint(SpringLayout.NORTH, label, 65, SpringLayout.NORTH, getContentPane());
            
            layout.putConstraint(SpringLayout.SOUTH, btnCopy, -7, SpringLayout.SOUTH, getContentPane());
            layout.putConstraint(SpringLayout.NORTH, btnCopy, -30, SpringLayout.SOUTH, getContentPane());
            layout.putConstraint(SpringLayout.EAST, btnCopy, -11, SpringLayout.EAST, getContentPane());
            layout.putConstraint(SpringLayout.WEST, btnCopy, -97, SpringLayout.EAST, getContentPane());
            
            getContentPane().add(textField);
            getContentPane().add(label);
            getContentPane().add(btnCopy);
            
            btnCopy.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    label.setText(textField.getText());
                }
            });
        }
    }
      

  2.   

    第二题对于数学表达式的处理建议你使用BeanShell,具体可以网上找找
      

  3.   

    题2 自己看吧这里用的SWING        //'*'操作
            if (temp == buttonMul) {
              switch (prekey) {
                case 0:
                  answerd += Double.parseDouble(textAnswer.getText());
                  break;
                case 1:
                  answerd -= Double.parseDouble(textAnswer.getText());
                  break;
                case 2:
                  answerd *= Double.parseDouble(textAnswer.getText());
                  break;
                case 3:
                  if (Double.parseDouble(textAnswer.getText()) == 0) {
                    textAnswer.setText("除数不能为零");
                    clickable = false;
                  }
                  else
                    answerd /= Double.parseDouble(textAnswer.getText());
                  break;
                default:
                  answerd = Double.parseDouble(textAnswer.getText());
              }
              textAnswer.setText("");
              prekey = key = 2;
            }
            //'/'操作
            if (temp == buttonDiv) {
              switch (prekey) {
                case 0:
                  answerd += Double.parseDouble(textAnswer.getText());
                  break;
                case 1:
                  answerd -= Double.parseDouble(textAnswer.getText());
                  break;
                case 2:
                  answerd *= Double.parseDouble(textAnswer.getText());
                  break;
                case 3:
                  if (Double.parseDouble(textAnswer.getText()) == 0) {
                    textAnswer.setText("除数不能为零");
                    clickable = false;
                  }
                  else
                    answerd /= Double.parseDouble(textAnswer.getText());
                  break;
                default:
                  answerd = Double.parseDouble(textAnswer.getText());
              }
              textAnswer.setText("");
              prekey = key = 3;
            }
          }
          //'='操作
          if (temp == buttonEqual && clickable == true) {
            //如果连续按'=',则进行连续运算
            if (prekey == 5) {
              if (key == 0) {
                answerd += vard;
                textAnswer.setText(df.format(answerd));
              }
              if (key == 1) {
                answerd -= vard;
                textAnswer.setText(df.format(answerd));
              }
              if (key == 2) {
                answerd *= vard;
                textAnswer.setText(df.format(answerd));
              }
              if (key == 3) {
                if (Double.parseDouble(textAnswer.getText()) == 0) {
                  textAnswer.setText("除数不能为零");
                  clickable = false;
                }
                else {
                  answerd /= vard;
                  textAnswer.setText(df.format(answerd));
                }
              }
            }
            else {
              vard = Double.parseDouble(textAnswer.getText());
              if (key == 0) {
                prekey = -1;
                answerd += Double.parseDouble(textAnswer.getText());
                textAnswer.setText(df.format(answerd));
              }
              if (key == 1) {
                prekey = -1;
                answerd -= Double.parseDouble(textAnswer.getText());
                textAnswer.setText(df.format(answerd));
              }
              if (key == 2) {
                prekey = -1;
                answerd *= Double.parseDouble(textAnswer.getText());
                textAnswer.setText(df.format(answerd));
              }
              if (key == 3) {
                prekey = -1;
                if (Double.parseDouble(textAnswer.getText()) == 0) {
                  textAnswer.setText("除数不能为零");
                  clickable = false;
                }
                else {
                  answerd /= Double.parseDouble(textAnswer.getText());
                  textAnswer.setText(df.format(answerd));
                }
              }
            }
            prekey = 5;
          }
      

  4.   

    一次发不下  在来      //'%'操作,对第二个操作数除以100
          if (temp == buttonMod && clickable == true) {
            if (answerd == 0) {
              String s = textAnswer.getText();
              textAnswer.setText(s);
            }
            else {
              boolean isDot = false;
              for (int i = 0; i < textAnswer.getText().length(); i++)
                if ('.' == textAnswer.getText().charAt(i)) {
                  isDot = true;
                  break;
                }
              //如果是double数,除100
              if (isDot == true) {
                double dtemp = Double.parseDouble(textAnswer.getText());
                dtemp = dtemp / 100.0;
                textAnswer.setText(Double.toString(dtemp));
              }
              else {
                //如果是int数但能被100整除,则去掉末尾两个零
                if (Integer.parseInt(textAnswer.getText()) % 100 == 0) {
                  int itemp = Integer.parseInt(textAnswer.getText());
                  itemp /= 100;
                  textAnswer.setText(Integer.toString(itemp));
                }
                //如果是int数,但不能被100整除,则按double数处理
                else {
                  double dtemp = Double.parseDouble(textAnswer.getText());
                  dtemp = dtemp / 100.0;
                  textAnswer.setText(Double.toString(dtemp));
                }
              }
            }
          }
          //开根号运算
          if (temp == buttonSqrt && clickable == true) {
            String s = textAnswer.getText();
            if (s.charAt(0) == '-') {
              textAnswer.setText("负数不能开根号");
              clickable = false;
            }
            else
              textAnswer.setText(Double.toString(java.lang.Math.sqrt(Double.
                  parseDouble(textAnswer.getText()))));
          }
          //倒数运算
          if (temp == buttonDao && clickable == true) {
            if (textAnswer.getText().charAt(0) == '0' &&
                textAnswer.getText().length() == 1) {
              textAnswer.setText("零不能求倒数");
              clickable = false;
            }
            else {
              boolean isDec = true;
              int i, j, k;
              String s = Double.toString(1 / Double.parseDouble(textAnswer.getText()));
              for (i = 0; i < s.length(); i++)
                if (s.charAt(i) == '.')
                  break;
              for (j = i + 1; j < s.length(); j++)
                if (s.charAt(j) != '0') {
                  isDec = false;
                  break;
                }
              if (isDec == true) {
                String stemp = "";
                for (k = 0; k < i; k++)
                  stemp += s.charAt(k);
                textAnswer.setText(stemp);
              }
              else
                textAnswer.setText(s);
            }
          }
          //按下'+/-'按钮时处理
          if (temp == buttonAddAndSub && clickable == true) {
            boolean isNumber = true;
            String s = textAnswer.getText();
            for (int i = 0; i < s.length(); i++)
              if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' ||
                     s.charAt(i) == '-')) {
                isNumber = false;
                break;
              }
            if (isNumber == true) {
              //如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉
              if (s.charAt(0) == '-') {
                textAnswer.setText("");
                for (int i = 1; i < s.length(); i++) {
                  char a = s.charAt(i);
                  textAnswer.setText(textAnswer.getText() + a);
                }
              }
              //如果当前字符串第一个字符不是符号,则添加一个符号在首字母处
              else
                textAnswer.setText('-' + s);
            }
          }
          //计算器有关内存操作
          //'MC'的操作,将内存清0
          if (temp == buttonMC && clickable == true) {
            memoryd = memoryi = 0;
            textMemory.setText("");
          }
          //'MS'的操作,将当前文本框内容保存入内存,显示'M'
          if (temp == buttonMS && clickable == true) {
            boolean isDot = false;
            textMemory.setText("   M");
            for (int i = 0; i < textAnswer.getText().length(); i++)
              if ('.' == textAnswer.getText().charAt(i)) {
                isDot = true;
                break;
              }
            //如果是double,则存入memoryd(double存储器)
            if (isDot == true) {
              memoryd = Double.parseDouble(textAnswer.getText());
              memoryi = 0; //保证存储器中存放最新的值
            }
            //如果是int,则存入memoryi(int存储器)
            else {
              memoryi = Integer.parseInt(textAnswer.getText());
              memoryd = 0; //保证存储器中存放最新的值
            }
          }
          //'MR'的操作,将存储器中的信息输出
          if (temp == buttonMR && clickable == true) {
            if (memoryd != 0)
              textAnswer.setText(Double.toString(memoryd));
            if (memoryi != 0)
              textAnswer.setText(Integer.toString(memoryi));
          }
          //'M+'的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器
          if (temp == buttonMAdd && clickable == true) {
            boolean isDot = false;
            for (int i = 0; i < textAnswer.getText().length(); i++)
              if ('.' == textAnswer.getText().charAt(i)) {
                isDot = true;
                break;
              }
            if (memoryi != 0) { //存储中是一个int型数
              if (isDot == false) //被加数是一个int型数
                memoryi += Integer.parseInt(textAnswer.getText());
              else { //被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零
                memoryd = memoryi + Double.parseDouble(textAnswer.getText());
                memoryi = 0;
              }
            }
            else
              memoryd += Double.parseDouble(textAnswer.getText());
          }
          //按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除
          if (temp == buttonBk && clickable == true) {
            String s = textAnswer.getText();
            textAnswer.setText("");
            for (int i = 0; i < s.length() - 1; i++) {
              char a = s.charAt(i);
              textAnswer.setText(textAnswer.getText() + a);
            }
          }
          //按下'CE'按钮,将当前文本框内数据清除
          if (temp == buttonCe) {
            textAnswer.setText("");
            clickable = true;
          }
          //按下'C'按钮,文本框内数据清除,同时var,answer清0
          if (temp == buttonC) {
            vard = answerd = 0;
            textAnswer.setText("");
            clickable = true;
          }
          //按下'复制'菜单栏
          if (temp == copyItem) {
            copy = textAnswer.getText();
          }
          //按下'粘贴'菜单栏
          if (temp == pasteItem) {
            textAnswer.setText(copy);
          }
          if (temp == sItem) {
            JOptionPane.showMessageDialog(panel, "当前是标准型计算器,\n科学型计算器有待更新。");
          }
          //按下'帮助主题'菜单栏
          if (temp == topHelp) {
            JOptionPane.showMessageDialog(panel, scrollHelp);
          }
          //按下'数字分组'菜单栏
          if (temp == numberGroup) {
            if (numberGroup.getText().compareTo("   数字分组(I)") == 0)
              numberGroup.setText("√数字分组(I)");
            else
              numberGroup.setText("   数字分组(I)");
          }
          //按下'关于'菜单栏
          if (temp == aboutCal) {
            JOptionPane.showMessageDialog(panel, "计算器1.00版\n开发者:05990113");
          }
        }
        //输入中如果有操作非法,比如按下两次'+',捕获异常
        catch (Exception e) {
          textAnswer.setText("操作非法");
          clickable = false;
        }
      }
      //主函数
      public static void main(String args[]) {
        new Calculator();
      }