酉時(shí)酒味濃
2017-06-21 05:49:11
我是根據(jù)書上關(guān)于MVC結(jié)構(gòu)的示例改寫成商品結(jié)賬系統(tǒng)的,書上的示例運(yùn)行后的窗口如下圖。(接下來,我放的東西有點(diǎn)多,額。。算是一個(gè)仿寫代碼的過程吧,看了以后可以防雷吧)書上的示例代碼如下:Example10_15.java?
public?class?Example10_15?{
???public?static?void?main(String?args[]){
??????WindowTriangle?win?=?new?WindowTriangle();
??????win.setTitle("使用MVC結(jié)構(gòu)");?
??????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("計(jì)算面積");
?????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?"無法計(jì)算面積";
?????}
???}?
???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結(jié)構(gòu)");?
??????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("商品編號(hào):"));
?????pNorth.add(textA);
?????pNorth.add(new?JLabel("商品名稱:"));
?????pNorth.add(textB);
?????pNorth.add(new?JLabel("商品產(chǎn)地:"));
?????pNorth.add(textC);?
?????pNorth.add(new?JLabel("商品單價(jià):"));
?????pNorth.add(textD);?
?????pNorth.add(new?JLabel("商品數(shù)量:"));
?????pNorth.add(textF);?
?????
?????pNorth.add(controlButton);?
?????controlButton.addActionListener(this);??//設(shè)置監(jiān)視器
?????add(pNorth,BorderLayout.NORTH);
?????add(new?JScrollPane(showArea),BorderLayout.CENTER);
???}
???
???public?void?actionPerformed(ActionEvent?e)?//動(dòng)作執(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("商品編號(hào):"+a+","+"商品名稱:"+b+","+"商品產(chǎn)地:"+c+","+"商品價(jià)格:"+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....我不知道我改的代碼錯(cuò)在哪。。。難道顯示商品屬性不能用StringBuffer類做嗎???!請(qǐng)大神指教也歡迎小伙伴前來討論!
15 回答

看風(fēng)景非凡
TA貢獻(xiàn)9條經(jīng)驗(yàn) 獲得超11個(gè)贊
額,你這代碼錯(cuò)誤太多了。。
int只是基本數(shù)據(jù)類型,哪來parseInt()方法(Integer).
String有這個(gè)parseString()方法嗎?
后面那些set方法每一個(gè)都沒返回類型,而且直接return就行,還賦值干嘛。
還有好多錯(cuò)
先打好基礎(chǔ)吧。

qq_迷宮的十字路口_2
TA貢獻(xiàn)17條經(jīng)驗(yàn) 獲得超4個(gè)贊
你這個(gè)代碼不會(huì)報(bào)錯(cuò)的嗎?建議你從新找一個(gè)代碼吧,看你的情況,知識(shí)不是一天兩天能夠補(bǔ)齊的。

我小時(shí)候可帥了
TA貢獻(xiàn)4條經(jīng)驗(yàn) 獲得超0個(gè)贊
get,set方法eclipse都可以快捷生產(chǎn)的,再就是多用debug模式調(diào)試你就知道自己寫的代碼哪兒有問題
添加回答
舉報(bào)
0/150
提交
取消