บทความที่ได้รับความนิยม

วันศุกร์ที่ 1 กรกฎาคม พ.ศ. 2554

JavaBeans ใน Netbeans

  
 Howdy!  คราวนี้เรื่องราวที่เราสนใจก็ยังอยู่ที่ JavaBeans ค่ะ ไฟล์ .jar ที่ได้ใช้ Beanbox ครั้งที่แล้ว   จะนำมาใช้ด้วยในครั้งนี้    เราจะใช้ netbean เขียนโปรแกรมที่แสดงการนับ โดยจะนับทุกๆ 1 วินาที และทำงานดังนี้
-        เมื่อกดปุ่ม Start จะเริ่มนับ
-        เมื่อกดปุ่ม Stop จะหยุดที่วินาทีนั้น
-        เมื่อกดปุ่ม Reset จะตั้งค่าเริ่มใหม่เป็น 0

JFrame Form 
สร้าง Java Project ที่ยังไม่มี class ใดๆและสร้าง class ที่มี JFrame Form โดย click ขวาที่ <default package>  แล้วเลือก New  -> JFrame Form…

            Adding Java Beans
      ที่ Palette  click ขวา แล้วเลือก Palette Manager…

    
     เมื่อได้หน้าต่าง Palette Manager  แล้ว เราจะเพิ่ม file .jar มาไว้ที่  categories ชื่อ beans
  
  
เพิ่มโดยเลือก Add from JAR…  ->  เลือก file .jar ->  เลือก components ที่จะเพิ่ม ->  เลือก Palette Categories

Palette Categories จะเลือกเป็น Beans ทุกครั้ง 

Components ที่จะเพิ่มมี 2 beans ดังนี้
     - Counter bean ใน Counter.jar  ใช้การนับและแสดงจำนวนที่นับ
     - TickTock bean ใน misc.jar ที่โหลดมาได้จาก ……   ใช้เป็นนาฬิกา

Connecting Counter &TickTock bean
 
ลาก Counter bean และ  TickTock bean  มาวางใน form 


             เพื่อนๆจะไม่เห็น TickTock bean ใน form แต่จะเช็คได้จาก Inspector ด้านมุมซ้ายล่าง  เพื่อนๆจะเปลี่ยนชื่อตัวแปรได้ที่ส่วนนี้ เราตั้งชื่อ Counter bean  เป็น  counter และ  TickTock bean  เป็น time ดังภาพ
 
            ปุ่ม Connection Mode  ใช้ในการเชื่อมการติดต่อ เมื่อกดปุ่ม connection mode  แล้วเลือก object ที่สร้างเหตุการณ์และ object ที่รับเหตุการณ์  เช่น ถ้าเราต้องการติดต่อ A กับ B โดย A จะเป็นผู้สร้างเหตุการณ์  และ B สนใจเหตุการณ์ที่เกิดขึ้น (B จะได้รับการแจ้งเตือนเมื่อ A)   
           เมื่อจะให้ counter ดูเหตุการณ์ของ time เราทำอย่างนี้ค่ะ Click connection mode  ->  เลือก time ->  เลือก counter  เมื่อหน้าต่าง Connection Wizard ปรากฏขึ้น ขั้นแรกให้เลือก Event ที่ time สร้างก่อน ตามด้วย method ที่ใช้ในการจัดการ event นั้นตามรูป


  
    Click Next>
         ขั้นต่อมาให้เลือก operation ที่จะทำเมื่อ event  ที่เลือกไว้เกิดขึ้น  เราจะให้เรียก method ชื่อ increment()  ตามรูปด้านล่าง

 
      เสร็จแล้วเมื่อกด Finished  netbean จะสร้าง code ให้เราโดยอัตโนมัติ
     
          Click ขวาที่ time ใน inspector  ->  ที่ Properties ใน interval ในหน้าต่างให้เปลี่ยนค่าจาก  5 เป็น 1 เพื่อให้ time property เปลี่ยนทุก  1 วินาที
 


                          Start, Stop & Reset
                   ต่อไปให้ลาก button ใหม่มา 3 button ตั้งชื่อว่า Start , Stop และ Reset
 ใช้ Connection mode เชื่อม button ทั้ง 3 กับ  counter   โดยสำหรับทุกปุ่ม method ที่ใช้จัดการคือ actionPerformed()
-ระหว่าง Start button กับ  counter
    Operation ที่จะทำเมื่อ event  ที่เลือกไว้เกิดขึ้น ( Specific Target Opertion) คือเรียก method start()
-ระหว่าง Stop button กับ  counter
    Operation ที่จะทำเมื่อ event  ที่เลือกไว้เกิดขึ้น ( Specific Target Opertion) คือเรียก method stop()

-ระหว่าง Reset button กับ  counter
    Operation ที่จะทำเมื่อ event  ที่เลือกไว้เกิดขึ้น ( Specific Target Opertion) คือเรียก method reset()
เรียบร้อยแล้ว code ทั้งหมดที่ netBean สร้างให้จะเป็นตามนี้

ในที่สุด โปรแกรมก็รันได้แล้วค่ะ

 
       เมื่อรันโปรแกรมจะเริ่มนับเลยนะค่ะ แต่ถ้าเพื่อนๆ ไม่อยากให้โปรแกรมนับ จนกว่าจะกดปุ่ม start ก็เติม code ที่ MyForm()  constructor อย่างนี้เลยค่ะ

Beanbox

สวัสดีค่ะ  $_$

คราวนี้เราลองมารู้จักกับ "การพัฒนาโปรแกรมโดยใช้ Beanbox" กันน่ะค่ะ


ก่อนอื่น เราต้องทำการดาวน์โหลดโปรแกรมกันก่อน


http://sites.google.com/site/kmitlcomponentthai/home/relataed-links  



อ่ะ ๆ !! ดาวน์โหลดทั้ง BDK และ nmake น่ะค่ะ


สำหรับ ผู้ที่ติดตั้ง jdk 1.4 ขึ้นไปเอาไว้ ต้องทำการแก้ไข BDK หลังจากติดตั้ง โดยแก้ไขที่


beans\demo\sunw\demo\buttons ที่ไฟล์ ExplicitBenaInfo.java


          EventSetDescriptor push = new EventSetDescriptor(beanClass,
          "actionPerformed", //แก้ตรงนี้
          java.awt.event.ActionListener.class,
          "actionPerformed"); 


แก้เป็น

           EventSetDescriptor push = new EventSetDescriptor(beanClass,
           "action", //แก้แล้ว
            java.awt.event.ActionListener.class,
            "actionPerformed");

               และทำการ extract ไฟล์ nmake  ไปไว้ที่ bean\demo หลังจากนั้น double click ที่ NMAKE และ nmake15 (ที่ได้ extract ไฟล์ไว้) เท่านี้ก็เริ่มต้นการใช้งานได้แล้วล่ะค่ะ

มาสร้าง Jar file กันก่อน

จากโปรแกรม ที่ใช้นะค่ะ->>

           #     เมื่อผู้ใช้กดปุ่ม START couter จะเพิ่มขึ้นทีละ 1 ทุกๆ 1 วินาที

          #     เมื่อผู้ใช้กดปุ่ม STOP ก็จะหยุด

              #     และถ้ากดปุ่ม RESET จะ reset ค่าให้เป็น 0                                                                                                                                                      

package counter;
import java.awt.*;

public class Counter extends Canvas {
            private final static int XPAD = 10;
            private final static int YPAD = 10;
            private int count;
            private boolean operate;

            public Counter() {
                        count = 0;
                        operate = true;
            }

            public void reset() {
                        count = 0;
                        repaint();
            }

            public void start( ) {
                        operate = true;
            }

            public void stop() {
                        operate = false;
            }

            public synchronized void increment() {
                        if(operate) {
                        ++count;
                        adjustSize();
                        repaint();
                        }
            }
            public void setFont(Font font) {
                        super.setFont(font);
                        adjustSize();
            }

            public Dimension getPreferredSize() {
                        Graphics g = getGraphics();
                        FontMetrics fm = g.getFontMetrics();
                        int  w = fm.stringWidth("" + count) + 2 * XPAD;
                        int h = fm.getHeight() + 2 * YPAD;
                        return new Dimension(w, h);
            }

            private void adjustSize() {
                         Dimension d = getPreferredSize();
                         setSize(d.width, d.height);
                         Component parent = getParent();
                         if(parent != null) {
                         parent.invalidate();
                         parent.doLayout();
                         }
            }

            public void paint(Graphics g) {
                        Dimension d = getSize();
                        FontMetrics fm = g.getFontMetrics();
                        int x = (d.width - fm.stringWidth("" + count))/2;
                        int  y = (d.height + fm.getMaxAscent() -
                        fm.getMaxDescent())/2;
                        g.drawString("" + count, x, y);
                        g.drawRect(0, 0, d.width - 1, d.height - 1);
              }
}
          #     save โปรแกรมข้างบนเป็นชื่อ Counter.java และทำการสร้าง manifest file และ save ชื่อ Counter.mf โดยมีรายละเอียดดังนี้

                     Main-Class: counter.Counter
                     Name: counter/Counter.class
                     Java-Bean: True

§            #     Compile file Counter.java ด้วยคำสั่ง

       

     #     และสร้าง Jar file ด้วยคำสั่ง

       

     #     หลังจากนั้นเราก็จะได้ Jar file มาไว้ใช้แล้วล่ะค่ะ




เรามาเริ่มใช้ Beanbox กันดู


     #     เริ่มด้วยการโหลดไฟล์ .jar จากที่เราได้สร้างไว้เข้ามา

         

1.       
     #     จากนั้นจะปรากฏ Counter ขึ้นมาให้เห็น

         

     #     Click ที่ Counter เพื่อมาลากสร้างในพื้นที่ว่างๆ ได้เลย

       
     
     #     จากนั้นก็มาสร้างปุ่มกันเลยค่ะ โดย click ที่ ExplicitButton แล้วลากสร้างปุ่ม( เปลี่ยนชื่อปุ่มได้ที่ช่อง label ค่ะ) สร้างออกมาทั้ง 3 ปุ่ม คือ START, STOP, RESET

        


     #     สร้าง action ให้ปุ่ม START โดย click ที่ปุ่ม START ก่อน แล้วเลือก Edit -> Events -> button push -> actionPerformed

        

     #     จะปรากฏ เส้นสีแดงขึ้น ให้ลากโยงไปยังกล่อง Counter

        


     #     จากนั้นจะปรากฏ EventTargetDialog ขึ้นมา เพื่อทำการเลือก target method ให้เลือกที่ start -> OK
        
      


     #     ทำซ้ำตามข้อ 4 กับปุ่ม STOP และ RESET

         

         


     #     Click ที่ TickTok แล้วมาลากวางที่พื้นที่ว่างๆ แล้วเปลี่ยนค่า interval เป็น 1 ค่ะ

       

     #     เลือกที่ Edit -> Events -> propertyChange -> propertyChange
        
         

     #     จะปรากฏ เส้นสีแดงขึ้น ให้ลากโยงไปยังกล่อง Counter

         

     #     จากนั้นจะปรากฎ EventTargetDialog ขึ้นมา เพื่อทำการเลือก target method ให้เลือกที่ increment -> OK

        

     #     หลังจากที่ทำมาครบทุกขั้นตอนแล้ว ก็มาทดลองเล่นได้เลยค่ะ
        

ลองทำตามกันดูน่ะค่ะ

Java Package Scope

สวัสดีค่ะ วันนี้เราจะมาพูดถึง Scope ของ Java กันน่ะค่ะ
     
          Scope ที่เราจะพูดถึงกันก็คือ การควบคุมการเข้าถึง methods, attributes ของ java หรือการกำหนดว่า classes อื่นนั้นจะสามารถเข้าถึง attributes นี้หรือเรียก methods นี้ใน class เราได้หรือเปล่า

ใน Java จึงมีการใช้ Modifiers คือ public, protected และ private และ ไม่ใส่ modifier หรือว่า default


       Modifiers ต่างๆ เมื่อใช้วางไว้ข้างหน้า จะกำหนดสิทธิการเข้าถึงตามนี้ แบ่งเป็น 2 ระดับคือ ระดับ classes (ตัว class เอง) และ ระดับ class member (attributes และ  methods)

               -----------การเข้าถึงในระดับ Class -----------


public : classes อื่นๆทุก classes สามารถใช้ class นี้ได้

default  : เรียกอีกอย่างว่า package-private  ถ้าไม่ใส่ modifier เฉพาะ classes ที่อยู่ใน package เดียวกันเท่านั้นที่เรียกใช้ได้

                      -----------การเข้าถึงในระดับ Class Member-----------

     สามารถใช้ public และ default ได้ผลเหมือนกับในระดับ class แต่ในระดับ member มี modifier เพิ่มอีก 2 ตัวคือ

protected member จะถูกใช้ได้ภายใน package และ  subclasses ของมันเท่านั้น

private :  member จะถูกใช้ได้แค่ภายใน class ของมันเท่านั้น


        ดังตารางที่แสดงให้เห็นถึงผลกระทบของ modifiers สำหรับ class member

                                              ◆ = Can Access  = No Access


การควบคุมการเข้าถึงที่  java  มีให้เราเลือกใช้ยังไม่หมดค่ะ
ในกรณีที่เรามี package 2  package คือ Package One และ  Package Two 
Package One :  มี  class Alpha และ     Beta
Package Two :  มี  class AlphaSub (subclass ของ Alpha) และ Gamma

    
  ตารางแสดงว่า member ใน class Alpha จะสามารถถูกใช้ได้จาก class ไหนบ้าง เมื่อใช้ modifiers  ต่างๆ


   เมื่อใช้ public ทุก class จะเห็นหมด
   เมื่อใช้ protected   class ใน package เดียวกัน (Package One) และ subclass จะเห็น
   เมื่อไม่ใช้  modifier  class ใน package เดียวกันเท่านั้นจะเห็น
   เมื่อใช้ private    จะเห็นได้ภายใน class มันเท่านั้น


// หวังว่าเพื่อนๆ จะได้นำไปใช้กันได้อย่างถูกต้องน่ะค่ะ ***

วันศุกร์ที่ 24 มิถุนายน พ.ศ. 2554

Design pattern ใน Eclipse

การใช้ Design pattern ใน Eclipse นั้นเป็นการใช้งานโดยที่ต้องมีการดาวโหลด plug in นำมาใส่เพื่มในโปรแกรมเพื่อทำการ เรื่มต้นใช้ Design pattern ครับ


เราสามารภดาวโหลดได้ที่นี้ครับ
http://www.patternbox.com/eclipse.html




เมื่อดาวโหลดมาเรียบร้อยแล้วก็ให้ทำการมาติดตั้งโดยการนำมาไฟล์ .zip ที่โหลดมา
นำมาใส่ใน folder ขอ Eclipse/plug in



หลังจากที่ได้ทำการติดตั้ง Plugin เรียบร้อยแล้ว เราจะมาสาธิตวิธีใช้งาน Design Pattern
บน Eclipse  อย่างง่ายๆกัน


โดยเริ่มจากทำการสร้าง Java Project โดยไปที่ File > New > Java Project จะปรากฏดังรูป
          

        ทำการตั้งชื่อ Project ที่ช่อง Project Name โดยในที่นี้ตั้งชื่อว่า Test จากนั้นคลิกที่ปุ่ม Finish   

เมื่อทำการสร้าง Project เรียบร้อยแล้ว ไปที่ File > New > Orther… > Java > Design Patter Wizard ดังรูป
        เมื่อกด Next > แล้ว จะปรากฏรูปดังนี้


ที่ Container: ให้ทำการกด Browse… เพื่อเลือก Project ที่เราได้ทำการสร้างขึ้นในขั้นตอนที่1 ในที่นี้มีชื่อว่า  Test จากนั้นคลิกที่ปุ่ม OK


ในตัวอย่างนี้เราจะใช้  Pattern Behavioral โดยให้เลือกที่
 GoF->Behavioral Pattern->Observer เสร็จแล้วกด Finish

จะปรากฏรูปดังนี้


หลังจากนั้นให้เลือก Observer แล้วกดปุ่ม Add… จะปรากฏหน้าต่างขึ้นมาเพื่อให้เรา
ตั้งชื่อ Class

เสร็จแล้วกด Finish ตัว Eclipse จะทำการสร้าง Class และ Generate Code ให้กับเราดังภาพ