這個功課大致上就多一個讓大家練習TextField的機會,其餘元件老師並沒有特別規定,所以同學們有興趣做其他元件的話,也歡迎去改寫。筆者本來在網誌上放的就是最符合老師規定的範例,所以算是相當簡單的東西,尤其是視窗程式設計,就是要發揮自己的設計理念,好好給它亂改一下才有趣阿XD
比方說顯示價格的地方,就可以產生出一張比較詳細的清單;或者多增加幾項功能,將物流費跟運費分開計算等等,而且使用者要是輸入不正確的重量,還會跳出訊息框來提醒使用者;不然在視窗背景跟按鈕上做點動態特效也是很有趣的東西,如果大家有心分享自己所學的話,請不吝於在留言上留下自己的寫法唷!
另外一個功課會在截止日期前一天再開放,雖然筆者文章都已經打好了,但這個網誌不只是要好心提供大家程式碼,而是希望大家在寫完程式後,或者遇到某些瓶頸時,來到筆者的網誌都能夠得到幫助,所以就認真去寫功課吧!
按下「Launch」鈕,可直接操縱此次功課的程式,歡迎試試看唷! 這個東西基本上是用Java Web Start的技術,大家有興趣可以參考這個網址了解一下:http://sofree.cc/java-web-start/
P.S.家裡用IE可以成功執行。
執行結果:
底下分享我自己寫的部分,另外也歡迎平時有光顧我網誌的讀者,可以在底下留言自己的寫法。^-^
寫法僅供參考,畢竟Java才學不到一年吧 >”<
(大家記得註解和程式碼要自己重新打過唷,工讀生會檢查;變數名稱和註解內容記得也要修改掉唷)
程式碼:
import java.awt.Container;
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.JPanel;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class a11967046 extends JFrame implements ActionListener{
/* s11967046 公版
* 請設計一Swing應用程式來計算網路購物的運費
* 基本物流處理費299元,1~5公斤,每公斤30元
* 超過5公斤,每一公斤為20元,
* 在JTextField元件輸入購物重量後,
* 按下"計算"鈕(JButton元件),
* 即可在一JLabel元件顯示購物所需的運費+物流處理費用。
*/
JPanel panel = new JPanel(); //新增一個Panel容器
JButton count_btn = new JButton(); //新增「計算」的按鈕
JLabel label = new JLabel(); //新增顯示結果文字標籤
JTextField field = new JTextField(20); //新增一個文字框
public a11967046(){
//設定應用程式的標題
super("網路購物運費與物流處理計算器");
//取得視窗容器
Container c = this.getContentPane();
//設定文字框內訊息
field.setText("請輸入物品重量");
//全選文字框,方便使用者更改
field.selectAll();
//設定按鈕文字
count_btn.setText("計算");
//設定文字標籤提示訊息
label.setText("計算結果於此處");
//將物件加入Panel中
panel.add(field);
panel.add(count_btn);
panel.add(label);
//將Panel加入Container中
c.add(panel);
//建立按鈕的監聽事件,呼叫自己這個的類別,去實作ActionListener
//和一個actionPerformed方法
count_btn.addActionListener(this);
}
public static void main(String[] args) {
a11967046 frame = new a11967046();
//設定frame的關閉事件為DISPOSE_ON_CLOSE:
//將本視窗的系統資源釋放掉,等到所有視窗都被Dispose時,
//則關閉應用程式
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
//設定frame的Size
frame.setSize(300,150);
//設定frame為可見
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent arg0) {
int sum = 0; //物流費加運費
//取得物品的重量
int weight = Integer.parseInt(field.getText());
//如果重量小於5
if(weight <= 5){
//總費用為299加重量乘以30元
sum = 299 + weight*30;
}
//如果重量大於5
else if (weight >5 ){
//總費用為299加上5公斤時的150
//並且將重量扣掉5公斤後
//剩下的都是乘以20元
sum = 299 + 150 + (weight-5)*20;
}
//顯示費用
label.setText("您的物流費和運費總結為" + sum + "元");
}
}
沒有留言:
張貼留言
歡迎提供良性建議^_^