Та тусгдахуун чиглэлийн хотолборлолийн ухагдахуунуудын талаар ойлголттой боллоо, одоо эдгээр ухагдахуунууд кодтой хэрхэн уялдахыг авч узье.

Энд ClickMe нэртэй апплет байна. Энэхуу апплет дотор хулгана дарахад улаан цэг гарах болно.

ClickMe апплет бол богинохон кодтой харьцангуй энгийн хотолбор. Гэвч хотолборлолийн туршлагагуй хунд энэ код аймшиг торуулж мэднэ. Яг одоогоор энэ хотолборийг нэгд нэгэнгуй мэдэх шаардлагагуй богоод тэр бухнийг энд тайлбарлахгуй. Гол нь эх кодтой танилцаж, сурсан ухагдахуун, нэр томъёотойгоо холбож сурах явдал юм. Бусад зуйлийг хожим судлах болно.

Эх код ба Апплет Шав

Энэ апплетийг эмхэтгэхэд хоёр эх файл шаардагдана: ClickMe.java болон Spot.java. Апплетийг гуйлгэхийн тулд дараах апплет шав агуулсан html файл байгуулах хэрэгтэй:


<applet code="ClickMe.class" width="300" height="150">
</applet>

Дараа нь уг хуудсаа толилуур юмуу апплетУзэгч хэрэгслэл руу ачаална. Бух файлууд нэг директор дотор байгаа эсэхийг шалгаарай.

ClickMe Апплет доторхи Тусагдахуунууд

Энэ апплет дотор олон тусагдахуун оролцон тоглоно. Хамгийн илэрхий хоёр нь танд шууд харагдаж байна: апплет оороо болон дэлгэц дээрхи улаан цэг.

Толилуур нь апплет агуулсан HTML код дотроос апплет шав олмогцоо апплет тусагдахуун байгуулна. Апплет шав нь апплет тусагдахуун байгуулах ундэс болсон ангийн нэрийг агуулна. Манай тохиолдолд ангийн нэр нь ClickMe юм.

ClickMe апплет нь оорийн ээлжиндээ дэлгэц дээрх улаан цэгийг тусгасан тусагдахуун байгуулна. Апплет дотор хулгана дарах бур апплет нь тусагдахууны х ба у координатыг оорчлох замаар цэгээ оорчилж оорийгоо дахин зурна. Цэг нь оорийгоо зурж чадахгуй; апплет нь цэг тусагдахуун дотор агуулагдах мэдээлэлд тулгуурлан цэгийг зурна.

Эдгээр илэрхий хоёр тусагдахуунаас гадна ул узэгдэх оор тусагдахуунууд энэ апплетэд чухал уурэг гуйцэтгэнэ. Энэ апплетэд хэрэглэгдэх (хар, цагаан, улаан) гурван онгийг гурван тусагдахуун тусгана, хулгана дарах хэрэглэгчийн уйлдлийг узэгдэл тусагдахуун тусгана гэх мэт.

ClickMe Апплет доторхи Ангиуд

Дэлгэц дээрх цэгийг тусгасан тусагдахуун маш хялбар тул Spot гэж нэрлэгдэх тууний ангийг авч узье. Энэ нь дурийн гурван хувьсагч зарлажээ: size нь цэгийн радиус, х нь цэгийн хэвтээ байрлал, у нь цэгийн босоо байрлалыг агуулна:

public class Spot {
    //instance variables
    public int size;
    public int x, y;

    //constructor
    public Spot(int intSize) {
        size = intSize;
        x = -1;
        y = -1;
    }
}

Ууний дээр, анги нь байгуулуур -- ангиас ууссэн шинэ тусагдахуун цэнэглэх ажил -- агуулж байна. Байгуулуур нь ангийн нэртэй яг адилхан нэртэй байгааг анзаарсан байх. Байгуулуур нь тусагдахууны бух гурван хувьсагчийг цэнэглэж байна. Дуудагч нь size – ийн анхны утгыг байгуулуурын хэмжигдэхуун маягаар илгээнэ. Апплет эхлэх уед дэлгэц дээр цэг гарахгуй гэдгийг харуулах ууднээс х ба у хувьсагчийн утгыг – 1 утгаар цэнэглэв.

Апплет цэнэглэгдэх мочид апплет нь шинээр цэг тусагдахуун байгуулна. Энд харгалзах кодыг апплет кодоос авч харуулав.

private Spot spot = null;
private static final int RADIUS = 7;
...
spot = new Spot(RADIUS);

Эхний моронд тусагдахуун уусгэж буй анги болох Spot огогдохууний торол бухий spot нэртэй хувьсагч зарлаад null утгаар цэнэглэсэн байна. Хоёрдахь моронд утга нь 7 байх RADIUS нэртэй бухэл хувьсагч зарлажээ. Эцэст нь суулийн моронд тусагдахуун байгуулж байна; new нь тусагдахуунд зориулсан ой хуваарилна. Spot(RADIUS) нь байгуулуур дуудахдаа RADIUS-ийн утга дамжуулж байна. Тиймээс цэг тусагдахууны радиус нь 7 байна.

ClickMe апплет доторхи Мэдээнууд

Таны ойлгосноор, тусагдахуун А нь тусагдахуун В-ээр ямар нэгэн юм хийлгуулэх захиалга огохдоо мэдээ хэрэглэх богоод мэдээ нь гурван хэсэгтэй:

  1. Мэдээний зорьсон тусагдахуун (таныДугуй)
  2. Гуйцэтгэх аргын нэр (арааСоль)
  3. Аргад шаардагдах ямарваа хэмжигдэхуун (доодАраа)

Энд ClickMe апплетээс авсан хоёр мор бичвэр байна:

g.setColor(Color.white);

g.fillRect(0, 0, getSize().width - 1, getSize().height - 1);

Эдгээр нь дэлгэц дээр хялбар дурс болон бичвэр хэрхэн зурахаа мэддэг g хэмээн нэрлэгдэх Graphics тусагдахуун руу апплетээс илгээсэн мэдээ юм. Толилуур нь апплет руу оорийгоо зурах заавар огох уедээ уг тусагдахууныг апплет руу илгээнэ. Эхний мор нь онгийг цагаан болгож хоёрдахь нь тэгшонцогтийг апплетийн хэмжээгээр дуургэнэ, тиймээс апплетийн бух муж цагаанаар будагдана.

Дараахь зураг дээр эхний мэдээ доторхи мэдээний бух хэсгийг харуулав:

ClickMe апплет доторхи Удамшил

Толилуур дотор ажиллахын тулд тусагдахуун нь апплет байх ёстой. Оороор хэлбэл тухайн тусагдахуун нь Java платформоос нийлуулсэн Applet ангиас удамшсан ангийн дур байх ёстой гэсэн уг.

ClickMe апплет тусагдахуун нь дараах маягаар зарлагдсан ClickMe ангийн дур юм:

public class ClickMe extends Applet implements MouseListener {

...

}

ClickMe анги нь extends Applet угээр Applet-ийн дэд анги болж байна. ClickMe нь толилуураар цэнэглэгдэх, эхлэх болон зогсох, толилуурын хуудас дахь муж дотор зурагдах, хулганы узэгдэл хулээн авахаар буртгуулэх зэрэг бололцоогоор хангагдсан дээд ангийн олон чадварыг овлон авна. Эдгээр давуу талаас гадна ClickMe анги нь нэлээд хязгаарлалт агуулна: тууний зуралтын код нь paint гэж нэрлэгдэх арга дотор, цэнэглэлтийн код нь init гэж нэрлэгдэх арга дотор бичигдэх ёстой гэх мэт.

public void init() {
    ... // ClickMe'н цэнэглэлтийн кодыг энд
}

public void paint(Graphics g) {
    ... // ClickMe'н зуралтын кодыг энд
}

ClickMe апплет доторхи Ууд

ClickMe апплет нь даралтын байрлал дээр улаан цэг зурах замаар хулганы даралтанд хариулна. Хэрэв ямар нэгэн тусагдахуун хулганы даралтын талаар мэдээлэл авахыг хусвэл Java платформын узэгдлийн тогтолцооны шаардлага ёсоор тухайн тусагдахуун нь MouseListener уудийг хэрэгжуулэх ёстой. Туунчлэн тухайн тусагдахуун нь хулганы сонсогчоор буртгуулэх ёстой.

MouseListener ууд нь хулгана дарах, хулгана апплетын гадна гарах зэрэг хулганы янз бурийн узэгдэлд дуудагддаг таван торлийн арга зарласан байдаг. Апплет нь зовхон хулганы даралт сонирхож байсан ч бух таван аргыг хэрэгжуулэх ёстой. Сонирхолын гадна улдэх узэгдлийн аргыг хоосон орхино.

ClickMe апплетын бутэн кодыг дор харуулав. Хулганы узэгдэл боловсруулахад оролцогч кодыг дармалаар ялгалаа.

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class ClickMe extends Applet implements MouseListener {
    private Spot spot = null;
    private static final int RADIUS = 7;

    public void init() {
        addMouseListener(this);
    }

    public void paint(Graphics g) 
   {
        // draw a black border and a white background
        g.setColor(Color.white);
        g.fillRect(0, 0, getSize().width - 1, getSize().height - 1);
        g.setColor(Color.black);
        g.drawRect(0, 0, getSize().width - 1, getSize().height - 1);

        // draw the spot
        g.setColor(Color.red);
        if (spot != null) 
       {
            g.fillOval(spot.x - RADIUS,
                       spot.y - RADIUS,
                       RADIUS * 2, RADIUS * 2);
        }
    }
   
    public void mousePressed(MouseEvent event) 
   {
        if (spot == null) 
       {
            spot = new Spot(RADIUS);
        }
        spot.x = event.getX();
        spot.y = event.getY();
        repaint();
    }

    public void mouseClicked(MouseEvent event) {}
    public void mouseReleased(MouseEvent event) {}
    public void mouseEntered(MouseEvent event) {}
    public void mouseExited(MouseEvent event) {}
}

API Бичиглэл

ClickMe апплет нь оорийн дээд ангиас маш олон чадвар овлосон байна. ClickMe хэрхэн ажиллаж байгаа талаар илуу ихийг мэдэхийн тулд тууний дээд анги Applet ангийг судлах хэрэгтэй. Энэ мэдээллийг хаанаас олох вэ? Та Java платформыг бурдуулэгч ангиудын зуйлчлэл болсон API бичиглэл дотроос анги бурээр гаргасан нарийвчилсан тодорхойлолтыг олж болно.

Java 2 Платформын API баримт нь java.sun.com дээр онлайн хэлбэрээр байдаг.

ClickMe апплетэд хэрэглэгдэх Java платформын бух анги болон уудийн талаар илуу их мэдэхийг хусвэл дараах ангиудын мэдээллийг API бичиглэл дотроос олж узээрэй:

Дугнэлт

Хэдийгээр энэ хичээлээр олон деталийг цухас дурдаж зарим зуйлийг тайлбарлалгуй орхисон хэдий ч таны хувьд тусагдахуун чиглэлийн ухагдахуунууд код дотор ямархуу байдалтай тааралддаг талаар зохих ойлголт бурдсэн гэж найдаж байна. Та одоо дараахь зуйлсийн талаар еронхий ойлголт авсан байх ёстой:

[Урагш] [Гэр] [Хойш]