恬然自得.活在當下: [功課]Swing練習Button,Label,Border

2011年5月24日 星期二

[功課]Swing練習Button,Label,Border

這個功課老師讓大家練習用Swing,當你點擊增加時會增加數字,然後當你點到十次之後,就要在Label上出現自己的姓名或學號,老師還要求使用BorderLabelPanel加上外框顏色,另外筆者還幫大家加了重置數字的功能。

如果同學們要修改的話,可以試著多加幾顆按鈕和功能,或是點擊十次後跳出訊息框,或者外框的顏色也可以弄得更有動態感,既然是設計視窗程式,也請大家多多思考有哪些設計方式吧!


執行結果:




底下分享我自己寫的部分,另外也歡迎平時有光顧我網誌的讀者,可以在底下留言自己的寫法。^-^

寫法僅供參考,畢竟Java才學不到一年吧 >”<
(大家記得註解和程式碼要自己重新打過唷,工讀生會檢查;變數名稱和註解內容記得也要修改掉唷)
程式碼:

import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class a11967046 extends JFrame implements ActionListener {
 /* 11967046 
  * 請依據5/18上課時所交付之作業,
  * 製作一個視窗,包含一個JLabel與一個JButton,
  * 按下Button時Label會顯示按下的次數,
  * 在按下第十次按鈕時請在Label上顯示自己的姓名。
  * 並注意以下要求: 
  * 1. Label設定藍色外框 
  * 2. JPanel請設定黃色外框。 
  */
 JButton count_btn = new JButton();   //新增計數用的按鈕
 JLabel label = new JLabel();      //新增一個提示文字標籤
 JPanel panel = new JPanel();      //新增一個Panel容器
 int i = 0;                        //計數用的變數
 
 public a11967046(){
  super("This is a frame");
  //使用BorderFactory類別設定邊界顏色
  panel.setBorder(BorderFactory.createMatteBorder(
    5,5,5,5,Color.yellow));
  //取得視窗容器
  Container c = this.getContentPane();
  //設定按鈕文字
  count_btn.setText("增加");
  //設定文字標籤文字
  label.setText("點擊次數是:0");
  //使用BorderFactory類別設定邊界顏色
  label.setBorder(BorderFactory.createLineBorder(Color.blue));
  
  //建立按鈕的監聽事件,呼叫自己這個的類別,去實作ActionListener
  //和一個actionPerformed方法
  count_btn.addActionListener(this);
  //將物件加入Panel中
  panel.add(label);
  panel.add(count_btn); 
  //將Panel加入Container中
  c.add(panel);
  
 }
 
 
 public static void main(String[] args) {
  a11967046 frame = new a11967046();
  //設定frame的關閉事件為DISPOSE_ON_CLOSE:
  //將本視窗的系統資源釋放掉,等到所有視窗都被Dispose時,
  //則關閉應用程式
  frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  //frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
  //設定frame的Size
  frame.setSize(300, 150);
  //設定frame的背景
  frame.setBackground(Color.blue);
  //設定frame為可見
  frame.setVisible(true);
 }


 @Override
 public void actionPerformed(ActionEvent e) {
  //當按鈕按下的是計數用的按鈕
  if(e.getSource() == count_btn){ 
   //增加次數
   i++;
   //顯示文字和目前次數
   label.setText("點擊次數是:"+i);
   count_btn.setText("增加");
   
   if(i>= 10){
    //改變文字標籤內容,上面寫著我的名字
    i=0;
    label.setText("學號:XXX,姓名:XXX");
    count_btn.setText("重置數字");
   }
  }
 }

}

沒有留言:

張貼留言

歡迎提供良性建議^_^