我是根據(jù)書上關于MVC結構的示例改寫成商品結賬系統(tǒng)的,書上的示例運行后的窗口如下圖。(接下來,我放的東西有點多,額。。算是一個仿寫代碼的過程吧,看了以后可以防雷吧)書上的示例代碼如下: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)?;??????????//更新數(shù)據(jù)
????????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("商品產(chǎn)地:"));
?????pNorth.add(textC);?
?????pNorth.add(new?JLabel("商品單價:"));
?????pNorth.add(textD);?
?????pNorth.add(new?JLabel("商品數(shù)量:"));
?????pNorth.add(textF);?
?????
?????pNorth.add(controlButton);?
?????controlButton.addActionListener(this);??//設置監(jiān)視器
?????add(pNorth,BorderLayout.NORTH);
?????add(new?JScrollPane(showArea),BorderLayout.CENTER);
???}
???
???public?void?actionPerformed(ActionEvent?e)?//動作執(zhí)行
???{
?????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);??????????//更新數(shù)據(jù)
????????stringBuffer.setGoodName(b);
????????stringBuffer.setGoodArea(c);
????????stringBuffer.setGoodValue(d);
????????stringBuffer.setGoodSum(f);
????????
????????String?information?=?stringBuffer.showInformation();?????
????????showArea.append("商品編號:"+a+","+"商品名稱:"+b+","+"商品產(chǎn)地:"+c+","+"商品價格:"+d+","+"商品數(shù)量:"+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條經(jīng)驗 獲得超11個贊
額,你這代碼錯誤太多了。。
int只是基本數(shù)據(jù)類型,哪來parseInt()方法(Integer).
String有這個parseString()方法嗎?
后面那些set方法每一個都沒返回類型,而且直接return就行,還賦值干嘛。
還有好多錯
先打好基礎吧。
添加回答
舉報
0/150
提交
取消