恬然自得.活在當下: [功課]Java Swing練習TextField

2011年5月29日 星期日

[功課]Java Swing練習TextField

這個功課大致上就多一個讓大家練習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 + "元");
 }

}


沒有留言:

張貼留言

歡迎提供良性建議^_^