为了账号安全,请及时绑定邮箱和手机立即绑定

使用MVC结构显示商品结账系统的商品属性...出问题了,咋整?

使用MVC结构显示商品结账系统的商品属性...出问题了,咋整?

酉时酒味浓 2017-06-21 05:49:11
我是根据书上关于MVC结构的示例改写成商品结账系统的,书上的示例运行后的窗口如下图。(接下来,我放的东西有点多,额。。算是一个仿写代码的过程吧,看了以后可以防雷吧)书上的示例代码如下:Example10_15.java  public class Example10_15 {    public static void main(String args[]){       WindowTriangle win = new WindowTriangle();       win.setTitle("使用MVC结构");        win.setBounds(100,100,420,260);    } } WindowTriangle.java  import java.awt.*; import java.awt.event.*; import javax.swing.*; public class WindowTriangle extends JFrame implements ActionListener {    Triangle triangle;             //模型    JTextField textA,textB,textC;   //视图    JTextArea showArea;         //视图    JButton controlButton;        //控制器    WindowTriangle() {       init();       setVisible(true);       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }    void init() {      triangle = new Triangle();      textA = new JTextField(5);         textB = new JTextField(5);      textC = new JTextField(5);      showArea = new JTextArea();          controlButton=new JButton("计算面积");      JPanel pNorth=new JPanel();      pNorth.add(new JLabel("边A:"));      pNorth.add(textA);      pNorth.add(new JLabel("边B:"));      pNorth.add(textB);      pNorth.add(new JLabel("边C"));      pNorth.add(textC);       pNorth.add(controlButton);       controlButton.addActionListener(this);      add(pNorth,BorderLayout.NORTH);      add(new JScrollPane(showArea),BorderLayout.CENTER);    }    public void actionPerformed(ActionEvent e) {      try{           double a = Double.parseDouble(textA.getText().trim());            double b = Double.parseDouble(textB.getText().trim());               double c = Double.parseDouble(textC.getText().trim());          triangle.setA(a) ;          //更新数据         triangle.setB(b);         triangle.setC(c);         String area = triangle.getArea();              showArea.append("三角形"+a+","+b+","+c+"的面积:");          showArea.append(area+"\n");  //更新视图      }       catch(Exception ex) {         showArea.append("\n"+ex+"\n");      }    } } Triangle.java  public class Triangle {    double sideA,sideB,sideC,area;    boolean isTriange;    public String getArea() {      if(isTriange) {         double p = (sideA+sideB+sideC)/2.0;         area = Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ;         return String.valueOf(area);      }      else {          return "无法计算面积";      }    }     public void setA(double a) {      sideA = a;      if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideC+sideB>sideA)         isTriange = true;      else         isTriange = false;    }    public void setB(double b) {      sideB = b;      if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideC+sideB>sideA)         isTriange = true;      else         isTriange = false;    }    public void setC(double c) {      sideC = c;      if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideC+sideB>sideA)         isTriange = true;      else         isTriange = false;    } }我自己改编的代码如下://Example10_15.java public class Example10_15 { public static void main(String args[]) {       WindowStringBuffer win = new WindowStringBuffer();       win.setTitle("使用MVC结构");        win.setBounds(100,100,420,260); } } //WindowStringBuffer.java  import java.awt.*; import java.awt.event.*; import javax.swing.*; public class WindowStringBuffer extends JFrame implements ActionListener  { StringBuffer stringBuffer;             //模型    JTextField textA,textB,textC,textD,textF;   //视图    JTextArea showArea ;         //视图    JButton controlButton;        //控制器        WindowStringBuffer()     {       init();       setVisible(true);       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }        void init()     {  stringBuffer = new StringBuffer();      textA = new JTextField(5);         textB = new JTextField(5);      textC = new JTextField(5);      textD = new JTextField(5);      textF = new JTextField(5);            showArea = new JTextArea();          controlButton=new JButton("录入商品信息");            JPanel pNorth=new JPanel();      pNorth.add(new JLabel("商品编号:"));      pNorth.add(textA);      pNorth.add(new JLabel("商品名称:"));      pNorth.add(textB);      pNorth.add(new JLabel("商品产地:"));      pNorth.add(textC);       pNorth.add(new JLabel("商品单价:"));      pNorth.add(textD);       pNorth.add(new JLabel("商品数量:"));      pNorth.add(textF);             pNorth.add(controlButton);       controlButton.addActionListener(this);  //设置监视器      add(pNorth,BorderLayout.NORTH);      add(new JScrollPane(showArea),BorderLayout.CENTER);    }        public void actionPerformed(ActionEvent e) //动作执行    {      try{        int a = int.parseInt(textA.getText().trim());            String b = String.parseString(textB.getText().trim());               String c = String.parseString(textC.getText().trim());          double d = Double.parseDouble(textD.getText().trim());         int f = int.parseInt(textF.getText().trim());                  stringBuffer.setGoodNum(a);          //更新数据         stringBuffer.setGoodName(b);         stringBuffer.setGoodArea(c);         stringBuffer.setGoodValue(d);         stringBuffer.setGoodSum(f);                  String information = stringBuffer.showInformation();              showArea.append("商品编号:"+a+","+"商品名称:"+b+","+"商品产地:"+c+","+"商品价格:"+d+","+"商品数量:"+f);          showArea.append(information+"\n");  //更新视图      }       catch(Exception ex)       {         showInformation.append("\n"+ex+"\n");      }    } } //StringBuffer.java public class StringBuffer  { int goodNum,goodSum; double goodValue;     String goodName,goodArea;        public String getInformation()     {      stringBuffer.showInformation();        public  setGoodNum(int a)    {    goodNum = a;        return a;    }        public  setGoodName(string b)    {    goodName = b;        return b;    }        public  setGoodArea(string c)    {    goodArea= c;        return c;    }        public  setGoodValue(double d)    {    goodValue = d;        return d;    }        public  setGoodSum(int f)    {    goodSum = f;        return f;    } }心痛2017....我不知道我改的代码错在哪。。。难道显示商品属性不能用StringBuffer类做吗?!!请大神指教也欢迎小伙伴前来讨论!
查看完整描述

15 回答

?
看风景非凡

TA贡献9条经验 获得超11个赞

额,你这代码错误太多了。。

int只是基本数据类型,哪来parseInt()方法(Integer).

String有这个parseString()方法吗?

后面那些set方法每一个都没返回类型,而且直接return就行,还赋值干嘛。

还有好多错

先打好基础吧。

查看完整回答
4 反对 回复 2017-07-25
?
文在内也

TA贡献2条经验 获得超0个赞

你这是自己写了个JDK吧

查看完整回答
反对 回复 2018-12-14
?
qq_迷宫的十字路口_2

TA贡献17条经验 获得超4个赞

你这个代码不会报错的吗?建议你从新找一个代码吧,看你的情况,知识不是一天两天能够补齐的。

查看完整回答
反对 回复 2017-12-22
?
我小时候可帅了

TA贡献4条经验 获得超0个赞

get,set方法eclipse都可以快捷生产的,再就是多用debug模式调试你就知道自己写的代码哪儿有问题

查看完整回答
反对 回复 2017-10-20
?
AUNO

TA贡献1条经验 获得超0个赞

@bllw89.

查看完整回答
反对 回复 2017-06-21
  • 15 回答
  • 2 关注
  • 5051 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信