Selasa, 20 Maret 2012

form dari PHP




nah, gambar di atas ini merupakan tugas dari pak guru
namun sayang belum dikoreksi cz hari sabtu kemaren pulang pagi, ada persiapan kelas 3 UAS
so, ini saya share semoga bermanfaat
tapi ini belum ada apa-apanya, belum ada form loopbacknya, hehehehe


codingnya,


<form method="POST">
<center><table>
    <tr>
    <td colspan="4"><center>FORMULIR PENDAFTARAN <BR> BIRO JODOH 2012<center>
   
    </td>
    </tr>
    <tr>
    <td colspan="5"><hr/></td>
    </tr>
    <tr>
        <td>Nama</td>
        <td>:</td>
        <td colspan="2"><input type="text" name="txtnama"></td>
    </tr>
   
    <tr>
        <td>Kota</td>
        <td>:</td>
        <td colspan="2">
            <select name="kota">
                <option value="1"></option>
                <option value="2">Malang</option>
                <option value="3">Medan</option>
                <option value="4">Jambi</option>
                <option value="5">Nganjuk</option>
            </select>
        </td>
    </tr>
    <tr>
        <td>Tanggal lahir</td>
        <td>:</td>
        <td colspan="2">
        <input type="number" name="txttanggal" maxlength="2" size="2" >
        <select name="bulan">
                <option value="1"></option>
                <option value="2">Januari</option>
                <option value="3">Februari</option>
                <option value="4">Maret</option>
                <option value="6">April</option>
                <option value="7">Mei</option>
                <option value="8">Juni</option>
                <option value="9">Juli</option>
                <option value="10">Agustus</option>
                <option value="11">September</option>
                <option value="12">Oktober</option>
                <option value="13">November</option>
                <option value="14">Desember</option>
            </select>
        <input type="text" name="txttahun" maxlength="4" size="6">
        </td>
    </tr>
    <tr>
        <td valign="top">Makanan kesukaan</td>
        <td valign="top">:</td>
        <td colspan="2">
            <input type="checkBox" name="mk1"> Tahu Telor<br>
            <input type="checkBox" name="mk2" checked="true"> Lalapan<br>
            <input type="checkBox" name="mk3"> Tahu Campur
        </td>
    </tr>
    <tr>
        <td valign="top">Hobi</td>
        <td valign="top">:</td>
        <td colspan="2">
            <input type="checkBox" name="hb1" checked="true"> belajar&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkBox" name="hb3"> tidur <br>
            <input type="checkBox" name="hb2"> membaca<input type="checkBox" name="hb2" checked="true"> nonton TV
        </td>
    </tr>
    <tr>
        <td valign="top">Jenis Kelamin</td>
        <td valign="top">:</td>
        <td colspan="2">
        <input type="radio" name="jk" value="1"checked="true">Perempuan<br>
        <input type="radio" name="jk" value="2">Laki - Laki </td>
    </tr>
    <tr>
        <td valign="top">Alamat</td>
        <td valign="top">:</td>
        <td><textarea></textarea></td>
        <td><input type="reset" value="RESET"><br>
        <input type="submit" value="KIRIM"></td>
    </tr>
</table>
</center>
</form>

masih kurang

ini sedikit hasil dari pengerjaan TA, mungkin kurang maksimal karena lagi liburan, hehehehehe
ini contoh menu untuk login sebagai pemodal
check this out



Senin, 19 Maret 2012

hasil render 3DSMAX

annyoung, ini ada beberapa tugas multimedia
sekarang udah belajar di 3ds MAX looo
check this out
 ini project buat botol pecah, karena outlinenya ketebalen makanya jadi gni. hehehehhe ^_^)

ini project yang terakhir sebelum libur panjang selama seminggu, ini ceritanya buat cincin couple.an

 ini buat gelas, pertamanya pecah dan make' efek relection n refraction. pokonya ngubah" material ituu deh jadinya kayak gni.

#masih butuh banyak belajar.

Kamis, 15 Maret 2012

Kesalahan dalam Bola Basket

Dalam permainan bola basket terdapat dua macam kesalahan, yaitu kesalahan teknik dan kesalahan perorangan. Yang dimaksud dengan kesalahan teknik adalah kesalahan karena
mengabaikan peringatan dan teguran para wasit, atau menggunakan taktik yang tidak sportif. Sedangkan kesalahan perorangan adalah kesalahan yang dilakukan karena persinggungan
badan antara pemain yang berlawanan.

Kesalahan perorangan tunggal adalah persinggungan antara seorang pemain dengan seorang pemain lawan.

Kesalahan rangkap maksudnya pada waktu yang bersamaan atau hampir bersamaan 2 orang pemain atau lebih yang berlawanan saling melakukan persinggungan.

Kesalahan banyak yaitu pada waktu yang bersamaan atau hampir bersamaan 2 orang pemain atau lebih yang melakukan persinggungan terhadap satu orang pemain lawannya.

Kesalahan yang dibuat secara sengaja terhadap lawan misalnya mendorong, menarik, memukul, memegang, atau memasang kaki untuk menjatuhkan lawan. Dengan kesalahan
yang disengaja ini pemain dapat langsung dikeluarkan dari lapangan, meskipun belum 5 kali melakukan kesalahan. Seorang pemain yang melakukan 5 kali kesalahan akan dikeluarkan
dari lapangan dan tidak boleh bermain sampai pertandingan itu selesai.

FOULT (KESALAHAN)

1. Illegal use hand adalah kesalahan yang  dilakukan pemain karena memukul salah satu anggota tubuh lawan.
2. Blocking adalah menghadang lawan dengan menghalangi pergerakan lawan.
3. Elbow adalah pelanggaran yang dilakukan karena menyikut lawan.
4. Holding adalah menarik lawan dengan maksud menguasai bola dari lawan.
5. Pushing adalah mendorong lawan dengan maksud merebut bola atau mencederai dari lawan.
6. Charging adalah kesalahan yang dilakukan karena menabrak lawan yang sudah menepati posisinya.
7. Double foult adalah situasi dimana dua pemain yang berlawanan saling melakukan kesalahan perorangan satu sama lainnya pada waktu bersamaan.
8. Technical foul adalah kesalahan yang dilakukan tanpa persinggungan seorang pemain atas suatu prilaku yang dalam batas kewajaran,tetapi tidak dibatasi untuk:
    >mengabaikan perintah wasit
    >menyentuh wasit
    >berkomunikasi dengan wasit
    >menggunakan bahasa atau isyarat menantang atau menghasud penonton
    >pura-pura menjatuhkan diri untuk mendapatkan kesalahan
9. Unspertman like foul adalah kesalahan perorangan seorang pemain dimana dalam penilaian wasit bukan merupakan suatu usaha yang dibenarkan untuk memainkan bola secara langsung di dalam semangat dan maksud dari peraturan.
10.Disqualifying foul adalah tindakan unsperman like yang menyolok dari seorang pemain,pemain pengganti,pemain yang sudah dilarang masuk,pelatih,asisten pelatih atau pengikut regu.      

Senin, 12 Maret 2012

Pelanggaran dalam Bola Basket

Definisi pelanggaran adalah usaha untuk merugikan pemain lain di luar lingkup aturan.
Mereka biasanya dilakukan melalui kontak fisik.
Pelanggaran biasanya disebut pada pertahanan, namun pemain ofensif dapat melakukan mereka juga.
Seperti disebutkan, pelanggaran bisa menjadi sumber kontroversi karena mereka sepenuhnya diserahkan kepada kebijaksanaan wasit. Ada juga berbagai jenis pelanggaran dan aturan yang berbeda berlaku untuk bagaimana busuk dihukum tergantung pada bermain game pada saat foul.
ini jenis planggaran yang ada dalam prmainan basket:

VIOLATION (PELANGGARAN)

1. Travelling adalah pelanggaran karena    membawa bola tidak di dribble,lebih dari 2 langkah.
2. Illegal dribble adalah pelanggaran yang dilakukan karena menghentikan bola sesaat disalah satu tangan atau kedua tangan kemudian mendribbelnya kembali.
3. Crraying the ball adalah kesalahan yang dilakukan karena mendribble dengan memutar bola.
4. 3 second adalah pelanggaran yang diberikan apabila seorang pemain berada di area tembakan bebas (key area) selama 3 detik.
5. 5 second adalah pelanggaran yang diberikan kepada seorang pemain karena menahan bola selama 5 detik tanpa ada usaha untuk passing ataupun dribble.
6. 8 second adalah pelanggaran yang diberikan kepada tim karena selama 8 detik bola tidak melewati garis tengah(tidak berpindah dari wilayah sendiri).
7. 24 second adalah pelanggaran yang dilakukan sebuah tim yang menguasai bola selama 24 detik tidak ada usaha memasukkan bola ke ring lawan.
8. Back court adalah pelanggaran karena pemain yang membawa bola kembali ke daerah  pertahanan setelah melewati garis tengah.
9. Deliberat foot ball
10. Out of ball

Sabtu, 10 Maret 2012

Timpang

Hubungan yang timpang takkan bertahan indah dalam jangka panjang. Pilihannya hanyalah dicabang atau ditebang.
Hei, kadang saya penasaran bagaimana rasanya jadi beras atau merica. Seperti apa rasanya dituang dalam wadah logam lalu diusahakan sejajar dengan pemberat ukuran gram.
Seperti apa rasanya berada dalam posisi imbang?
Setelah mengalami dan mengamati beragam jenis hubungan, saya sedikit berpikir. Menanyakan hati, seperti apa rasanya berada dalam sebuah hubungan yang timpang? Dengan hak istimewa seorang perempuan yang senang bercerita dan mendengarkan, saya banyak dicurhati teman. Mereka mengatakan sering mengalami “ketidakadilan” sebuah hubungan.

 “Kayaknya kok aku terus yang berusaha“, kata seorang.
Dia maunya cuma didengarkan, aku capek. Dia tidak mau mendengar omonganku“, keluh yang lain.
Aku sebal, kok dia gak pernah cerita apa-apa ya sama aku?” curhat lainnya.
Well…yah…tak jarang komunikasi jadi sumbang setelah sekian waktu. Hidup ini memang penuh hubungan semacam itu.  Hubungan yang timpang dan tidak imbang.
Karena sebuah hukum tarik-tarikan, maka tak ada satupun jenis hubungan yang tidak mengalami ketimpangan. Misalnya, seorang Ibu merasa lelah luar biasa karena merasa cintanya sia-sia: anaknya cuek pada perasaannya dan bersikap durhaka. Karyawan baru merasa diabaikan atasan yang lebih sayang pada pegawai lama dan menganggap kerja keras yang sudah ia upayakan tak ada artinya. Seekor anjing merasa iri pada kucing baru peliharaan majikannya #eh.
Sebuah hal sederhana semacam pertemanan bisa sedikit mematahkan hati selain masalah percintaan. Misal ya, jika kita berteman, kita memang bahagia dan merasa beruntung memiliki teman-teman yang menyediakan telinganya untuk mendengar cerita, bahu untuk bersandar, tawa untuk ditularkan atau pikiran gila yang mencerahkan. Tapi bagaimana jika satu pihak bertindak “lebih” sementara yang lain bertindak “kurang”? Ada pihak yang lebih suka diam dan mendengarkan, sementara ada pihak lain yang gemar bercerita dan menyuarakan perasaan alias curhat. Tapi kemudian kedua sisi itu bertukar posisi dan mereka mulai berpikir ada yang kurang. Mengapa ia tak mau ganti mendengar atau tak mau ganti bercerita?
Bercerita sepertinya sederhana. Simpel. Tidak sulit. Kegiatan tanpa mengeluarkan dana dan bisa dilakukan kapan saja. Apa iya?
Jika ditanya, saya memang hobi bicara. Tapi ada kalanya, saya ingin mendengar cerita. Saya selalu merasa ada yang kurang andaikan pihak sayalah satu-satunya yang terus bercerita. Tanpa jeda. Sampai kehabisan bahan bicara. Kok bisa? Karena, pihak satunya tidak mengomentari, menanggapi, atau menambahkan wacana dari pihaknya. Saya seperti main gitar dengan satu tangan. Tidak bunyi. Masih mending main Squash (gaya luuu..Squash! kayak ngerti aja!). Setidaknya bola yang saya pukul memantul. Bisa saya pukul lagi dan lagi sampai menghantam muka sendiri. Tapi main Squash saja ada teman mainnya. Menghadapi bola yang sama, dinding yang sama…bersama-sama.
Membina sebuah hubungan memang tidak gampang. Butuh usaha dan usaha dan usaha. Tampaknya memang mudah, “Ah..sudah jadi pacar ini, kurang apa lagi.” “Ah, besok kan masih ada waktu ketemuan. Kayak gak ada hari lain aja.” Bla dan bla dan bla. Maka kalau sudah begitu jangan heran kalau jenis hubungan apapun yang dimiliki lalu merenggang. Kadang kelelahan disalahkan sebagai faktor kita meremehkan suatu hubungan. Ada juga faktor pembiaran dan kesalahpahaman. Hubungan keluarga masih mendingan, terselamatkan faktor garis keturunan. Amit-amit kalau ada anak yang berseteru dengan orang tua layaknya perang Amerika-Rusia. Haloo…itu ayah ibu lho. Ingat? Yang membuat kamu ada di dunia berwujud manusia.
Hubungan yang dijalin antara orang asing yang kemudian menjadi teman atau kekasih atau rekan adalah yang (setidaknya) paling memerlukan trik penanganan. Kalau hanya pasif saja, hubungan-hubungan itu takkan bertahan.
Seorang teman mengakui bahwa ia pernah dalam posisi seorang yang saya keluhkan: hanya diam mendengarkan dan jarang bercerita tentang diri sendiri pada temannya. Dulu ia berpikir, bahwa ia menjadi seorang teman yang baik dengan lebih banyak mendengarkan. Tapi kemudian temannya mengungkapkan ketidakpuasan dengan alasan ketidakadilan. “Curang dong kalau aku terus yang cerita, nanti kamu yang pegang kelemahanku”, ujar temannya kala itu.
Mungkin benar itu masalah siapa memegang kelemahan siapa. Tapi buat saya, hal itu lebih terlihat sebagai persoalan kepercayaan. Rahasia adalah hal terakhir yang ingin kita bicarakan dengan orang lain karena berkaitan dengan kunci kelemahan. Tapi justru disitulah suatu hubungan diuji. Cukup percayakah kamu pada orang lain untuk menceritakan rahasiamu? Tentu saja bukan untuk disebar layaknya gosip murahan. Tapi, membiarkan orang mengintip atau mengetahui sedikit tentang diri kita akan membuat mereka semakin percaya dan setia. Mereka memahami letak keinginan dan harapan kita. Mereka menjadi paham nilai-nilai yang kita pegang dan bebas menjadi diri sendiri saat bersama kita.
Maka, nasehat yang mengatakan “biarkan orang lain berkesempatan bicara lebih, sebaiknya kita banyak mendengarkan” dalam suatu komunikasi harus disikapi sebijak mungkin. Kalau setiap pelibat komunikasi menerapkannya mentah-mentah, apa yang kemudian terjadi? SEPI. Semua orang sibuk diam dan mendengarkan tapi tidak ada yang bercerita dan membuka diri.
Bagaimana dengan saya sendiri?
Saya pun mengalami fase-fase hubungan timpang. Dulu saya tidak terima. Saya benci menjalani hubungan yang tidak seimbang. Tapi sekarang saya hanya lebih berusaha dewasa dan mencoba memahami sisi-sisi lain persoalan. Oh, dia sedang sibuk. Oh, dia hanya lupa. Oh, dia tak ada waktu, dan sebagian alasan lain yang saya jadikan permakluman.
Satu hal yang saya jadikan pegangan: Hubungan yang timpang takkan bertahan indah dalam jangka panjang. Pilihannya hanyalah dicabang atau ditebang.
Dicabang adalah ketika saya menyadari tak lagi bisa memperjuangkan hubungan sendirian. Ia terlanjur merenggang. Hal ini alami sebetulnya. Toh, kita akan selalu bertemu orang baru dalam perjalanan waktu. Maka sambil terus mempertahankan hubungan lama yang ada (yang saya biarkan alami apa adanya: tanpa perasaan berlebihan semacam amarah atau kekecewaan terpendam), saya akhirnya mencari kesempatan dalam hubungan-hubungan baru. Dengan adanya dinamika hubungan satu mengisi kebutuhan yang tak bisa diisi hubungan yang lain, saya merasakan utuh dan baik-baik saja.
Sementara ini saya belum pernah memilih opsi kedua: Menebang hubungan yang renggang. Setidaknya, tidak dengan sengaja. Saya adalah orang yang ingin mempertahankan hubungan sebaik-baik yang bisa saya upayakan. Mungkin sedikit terlalu loyal, tapi bukan saya yang menjauh setidaknya.
Beberapa orang tidak berani menebang. Mereka lebih memilih untuk bercabang dan mendapatkan keutuhan dari sana. Menebang hanya opsi terakhir saat kita tak lagi sanggup bertahan dan  hubungan itu terlalu melibatkan perasaan semacam amarah dan dendam.
Untuk jenis hubungan tak sehat yang hanya menggerogoti kewarasan diri, saya akan mencoba berani menebang. Agar darinya, saya bisa belajar menumbuhkan pucuk harapan. Harapan untuk suatu hubungan yang menyehatkan dan membuat arti bagi keberadaan saya di kehidupan.
Dalam pencarian terus akan situasi berimbang,

Kamis, 08 Maret 2012

Konferensi Tingkat Tinggi Asia-Afrika


Konferensi Tingkat Tinggi Asia-Afrika (KTT Asia-Afrika; kadang juga disebut Konferensi Bandung) adalah sebuah konferensi tingkat tinggi antara negara-negara Asia dan Afrika, yang kebanyakan baru saja memperoleh kemerdekaan. KTT ini diselenggarakan oleh Indonesia, Myanmar (dahulu Burma), Sri Lanka (dahulu Ceylon), India dan Pakistan dan dikoordinasi oleh Menteri Luar Negeri Indonesia Roeslan Abdulgani. Pertemuan ini berlangsung antara 18 April-24 April 1955, di Gedung Merdeka, Bandung, Indonesia dengan tujuan mempromosikan kerjasama ekonomi dan kebudayaan Asia-Afrika dan melawan kolonialisme atau neokolonialisme Amerika Serikat, Uni Soviet, atau negara imperialis lainnya.
Sebanyak 29 negara yang mewakili lebih dari setengah total penduduk dunia pada saat itu mengirimkan wakilnya. Konferensi ini merefleksikan apa yang mereka pandang sebagai ketidakinginan kekuatan-kekuatan Barat untuk mengkonsultasikan dengan mereka tentang keputusan-keputusan yang memengaruhi Asia pada masa Perang Dingin; kekhawatiran mereka mengenai ketegangan antara Republik Rakyat Cina dan Amerika Serikat; keinginan mereka untuk membentangkan fondasi bagi hubungan yang damai antara Tiongkok dengan mereka dan pihak Barat; penentangan mereka terhadap kolonialisme, khususnya pengaruh Perancis di Afrika Utara dan kekuasaan kolonial perancis di Aljazair; dan keinginan Indonesia untuk mempromosikan hak mereka dalam pertentangan dengan Belanda mengenai Irian Barat.
Sepuluh poin hasil pertemuan ini kemudian tertuang dalam apa yang disebut Dasasila Bandung, yang berisi tentang "pernyataan mengenai dukungan bagi kedamaian dan kerjasama dunia". Dasasila Bandung ini memasukkan prinsip-prinsip dalam Piagam PBB dan prinsip-prinsip Nehru.
Konferensi ini akhirnya membawa kepada terbentuknya Gerakan Non-Blok pada 1961.

Widget-widget SWT

Pada bagian ini akan kita bahas widget-widget yang disediakan oleh SWT. Kelas Widget merepresentasikan semua objek user interface. Kelas ini adalah kelas abstrak yang tidak bisa langsung diinstansiasi.
Berikut ini adalah metode-metode yang dimiliki oleh seluruh widget turunan dari kelas abstrak Widget yang mencakup hampir seluruh widget SWT.
MetodePenjelasan
dispose()Menghapus widget dari memori.
isDisposed()Mengembalikan true jika widget ini sudah dihapus dari memori
setData(Object o)Menambahkan data tambahan (terserah kita) ke dalam suatu widget. Data ini disebut data aplikasi. Data ini tidak akan ditampilkan pada widget.
getData()Mengembalikan Object yang merupakan data yang bisa kita tambahkan ke dalam widget
setData(String key, Object o)Jika kita akan menambahkan banyak data ke dalam objek, akan lebih mudah jika kita menandai data tersebut dengan suatu kunci key. Data ini tidak akan ditampilkan pada widget.
getData(String key)Mengembalikan Object yang merupakan data tambahan ke suatu widget, yang memiliki kunci key
getStyle()Mengembalikan int yang merupakan bit gaya suatu widget.
Event ini terdapat pada semua kelas turunan dari kelas abstrak Widget
Kelas Event (event bertipe)Interface/Kelas Listener (listener bertipe)Metode (listener bertipe)Jenis event (event tanpa tipe)Penjelasan
DisposeEventDisposeListenerwidgetDisposed(DisposeEvent)SWT.DisposeWidget dihapus

Pengenalan Konsep Widget pada SWT

Secara tradisional, widget bisa dibayangkan seperti perangkat abstrak yang berguna untuk melakukan tugas tertentu. Istilah ini popules dalam bidan ekonomi. Para pembuat software meminjam istilah ini untuk menyebut suatu paket program pembuat GUI (grahical user interface). SWT adalah kepanjangan dari Standard Widget Toolkit karena widget merupakan dasar pembangun suatu aplikasi yang dibangun dengan menggunakan SWT.
Apa itu widget?
Widget adalah elemen GUI yang dapat berinteraksi dengan user. Widget mengatur dan menentukan kondisinya sendiri dengan memggunakan kombinasi beberapa operasi grafik. Dengan menggunakan mouse atau keyboard, user bisa mengubah kondisi suatu widget. Ketika kondisi suatu widget berubah, baik diubah oleh user ataupun diubah oleh suatu kode program, maka widget akan menggambar dirinya kembali untuk merefleksikan hasil perubahannya.
Siklus hidup widget
Widget memiliki siklus hidup sendiri. Widget dibuat oleh programmer dan dibuang ketika tidak lagi dibutuhkan. Karena siklus hidup suatu widget sangat penting untuk memahami SWT, maka kita akan bahas lebih jauh pada bagian ini.
1. Membuat Widget
Widget dibuat dengan menggunakan konstruktornya, atau dengan kata lain membuat instansi suatu kelas. Ketika widget dibuat, widget akan mengambil sumber daya komputer (memori, prosesor) dari sistem operasi. Artinya semua widget akan berada di level sistem operasi, sehingga unjuk kerja dan pengaturan memori akan lebih optimal.
Konstruktor akan mengambil argumen yang biasanya tidak akan bisa diubah setelah widget dibuat. Ada 4 kemungkinan konstruktor dari suatu jenis widget :
  • Widget()
  • Widget(Widget induk)
  • Widget(Widget induk, int bitGaya)
  • Widget(Widget induk, int bitGaya, int posisi)
Widget tidak bisa dibuat tanpa induk. Ini bisa dilihat dari pengenalan tentang widget di bagian sebelumnya bagaimana widget tersusun secara hirarkis. Jenis induknya tergantung dari jenis widgetnya. Misalnya, induk dari suatu menu harus berupa menu, dan tidak bisa berupa tombol. Kompiler akan mengecek apakah induk suatu widget sesuai dengan tipenya, jika tidak, kompiler akan menampilkan pesan kesalahan. (Pada beberapa platform, kita dibolehkan untuk mengubah induk suatu widget. Akan tetapi SWT tidak memiliki metode getParent() pada kelas-kelas Widgetnya. Ini disebabkan karena kompleksitasnya yang mengharuskan kita untuk melakukan type cast kepada tipe induk yang benar.)
Bit gaya (style) adalah nilai bit integer yang digunakan untuk mengatur perilaku dan tampilan suatu widget. Biasanya bit gaya hanya dibutuhkan pada saat widget dibuat, misalnya memilih jenis editor multi baris atau baris tunggal. Karena atribut ini tidak bisa diubah setelah widget dibuat, maka gaya suatu widget juga tidak bisa diubah setelah widget diinstansikan.
Semua gaya widget dikumpulkan sebagai konstanta pada kelas org.eclipse.swt.SWT. Kita bisa menggambungkan beberapa gaya dengan menggunakan operasi OR. Misalnya kode berikut akan membuat widget teks multi baris yang memiliki tepi serta scroll bar horizontal dan vertikal.
Text teks = new Text (induk, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
Gaya suatu widget bisa kita ambil setelah widget tersebut dibuat dengan menggunakan metode instansi getStyle(). Untuk mengujinya, kita bisa menggunakan operasi AND yang jika hasilnya tidak nol, maka widget tersebut memiliki gaya yang diuji. Misalnya, kode berikut menguji apakah suatu widget teks memiliki tepi, kemudian mencetak hasilnya pada konsol.
if ((teks.getStyle() & SWT.BORDER) != 0)
    System.out.println("teks memiliki tepi");
else
    System.out.println("teks tidak memiliki tepi");
Paremeter posisi memungkinkan kita membuat widget baru pada suatu induk di posisi tertentu. Jika tidak diberikan, maka secara otomatis widget baru akan ditempatkan di akhir posisi. Hal ini akan lebih memudahkan kita untuk membuat widget pada urutan tertentu, misalnya membuat menu dengan urutan tertentu.
2. Membuang widget
Ketika widget tidak lagi dibutuhkan, termasuk ketika program selesai, maka widget harus dihapus secara eksplisit dengan menggunakan metode instansi dispose(). Metode ini akan menyembunyikan widget, menghapus widget yang ditampungnya, dan membuat semua referensi di dalamnya menjadi null.
Jika metode dispose() tidak dipanggil setelah program selesai dijalankan, maka hal ini akan menyebabkan kebocoran memori, di mana memori pada sistem operasi lambat laun akan habis dipenuhi oleh widget yang tidak dihapus setelah program selesai.
Memanggil metode dispose() untuk widget yang sudah dibuang, akan melemparkan pengecualian SWTException. Untuk mengetahui apakah suatu widget sudah dihapus, kita bisa menggunakan metode instansi isDisposed().
Ada dua aturan yang penting untuk diingat :
  • Jika Anda membuat widget, maka pastikan Anda menghapusnya. Atau dengan kata lain, semua widget yang Anda buat dengan konstruktor wajib dihapus. Akan tetapi jika Anda mendapatkan widget dari metode instansi suatu widget, misalnya Font huruf = kontrol.getFont(), maka Anda tidak perlu menghapusnya
  • Jika Anda menghapus suatu widget, maka semua widget di bawahnya akan dihapus juga. Atau dengan kata lain, jika Anda menghapus suatu Shell, maka isi seluruh Shell akan dihapus secara otomatis. Demikian juga halnya dengan menu, jika Anda menghapus menu utama, maka semua sub-menu akan otomatis dihapus.

Mengkompilasi dan Membuat Program SWT Berjalan di Luar Eclipse

Untuk bisa membuat program kita berguna untuk orang lain, kita harus bisa mengkompilasi dan membuat program tersebut sebagai satu "paket". Proses ini disebut menyebarkan (deploy). Pada Eclipse, program yang telah kita buat bisa kita deploy dalam format JAR (Java Archive), yang menggabungkan semua file kelas yang sudah dikompilasi beserta pustaka yang dibutuhkan untuk bisa menjalankan program tersebut.
Mari kita lihat contoh program HelloSWT yang sudah dibahas sebelumnya. Untuk men-deploy program ini sehingga bisa dijalankan di luar Eclipse, lakukan langkah-langkah berikut :
  • Klik kanan pada nama proyek Anda, kemudian pilih Export. Setelah itu kotak dialog akan terbuka. Kemudian pilih Runnable JAR File dari dalam folder Java.
  • Pilih HelloSWT - HelloSWT pada Launch configuration dan juga masukkan di mana file JAR hasilnya akan ditempatkan. Jika nama direktori tidak diberikan, Eclipse akan meletakkan file JAR tersebut pada direktori di mana workspace berada, yaitu di mana data proyek ditempatkan. (Misalnya, di komputer saya proyek HelloSWT berada pada direktori C:\belajarjava.lyracc.com\HelloSWT, maka file JAR tersebut akan diletakkan pada direktori C:\belajarjava.lyracc.com\)

  • Klik Finish, kemudian OK untuk setiap pertanyaan yang mungkin muncul berikutnya. Sekarang, gunakan Windows Explorer untuk mencari di mana file JAR hasilnya berada. Double click pada file tersebut dan Anda akan bisa menjalankannya langsung seperti aplikasi lainnya. Anda bisa juga mengirimkan file ini melalui email atau mengkopinya melalui flash disk ke teman atau kerabat Anda tanpa perlu menyertakan Eclipse.

  • CATATAN : Ingat bahwa SWT bergantung penuh pada sistem operasi yang Anda gunakan, karena SWT menggunakan widget bawaan sistem operasi seperti dijelaskan pada bagian sebelumnya. Ketika Anda membuat program ini pertama kali, Anda menambahkan pustaka SWT yang spesifik terhadap sistem operasi di mana Eclipse berjalan. Artinya, jika Anda menambahkan pustaka org.eclipse.swt.win32.win32.x86_3.4.1.v3449c, maka program JAR Anda hanya akan bisa dijalankan pada sistem operasi Windows. Untuk bisa menjalankannya pada sistem operasi lain, misalnya Linux, maka Anda harus menambahkan pustaka SWT khusus Linux yang bisa diunduh secara terpisah atau menggunakan Eclipse pada Linux.
  • Berikut ini adalah screen shot hasil jalannya program

Stream, Reader, dan Writer

Tanpa bisa berinteraksi dengan dunia lain, suatu program tidak ada gunanya. Interaksi suatu program dengan dunia lain sering disebut input/output atau I/O. Sejak dulu, salah satu tantangan terbesar untuk mendesain bahasa pemrograman baru adalah mempersiapkan fasilitas untuk melakukan input dan output. Komputer bisa terhubung dengan beragam jenis input dan output dari berbagai perangkat. Jika bahasa pemrograman harus dibuat secara khusus untuk setiap jenis perangkat, maka kompleksitasnya akan tak lagi bisa ditangani.
Salah satu kemajuan terbesar dalam sejarah pemrograman adalah adanya konsep (atau abstraksi) untuk memodelkan perangkat I/O. Dalam Java, abstraksi ini disebut dengan aliran (stream). Bagian ini akan memperkenalkan tentang aliran, akan tetapi tidak menjelaskan dengan komplit. Untuk lebih lengkapnya, silakan lihat dokumen resmi Java.
Ketika berhubungan dengan input/output, kita harus ingat bahwa ada dua kategori data secara umum : data yang dibuat oleh mesin, dan data yang bisa dibaca manusia. Data yang dibuat mesin ditulis dengan model yang sama dengan bagaimana data tersebut disimpan di dalam komputer, yaitu rangkaian nol dan satu. Data yang bisa dibaca manusia adalah data dalam bentuk rangkaian huruf. Ketika kita membaca suatu bilangan 3.13159, kita membacanya sebagai rangkaian huruf yang kita terjemahkan sebagai angka. Angka ini akan ditulis dalam komputer sebagai rangkaian bit yang kita tidak mengerti.
Untuk menghadapi kedua jenis data ini, Java memiliki dua kategori besar untuk aliran : aliran byte untuk data mesin (byte stream), dan aliran karakter (character stream) untuk data yang bisa dibaca manusia. Ada banyak kelas yang diturunkan dari kedua kategori ini.
Setiap objek yang mengeluarkan data ke aliran byte masuk sebagai kelas turunan dari kelas abstrak OutputStream. Objek yang membaca data dari aliran byte diturunkan dari kelas abstrak InputStream. Jika kita menulis angka ke suatu OutputStream, kita tidak akan bisa membaca data tersebut karena ditulis dalam bahasa mesin. Akan tetapi data tersebut bisa dibaca kembali oleh InputStream. Proses baca tulis data akan menjadi sangat efisien, karena tidak ada penerjemahan yang harus dilakukan : bit yang digunakan untuk menyimpan data di dalam memori komputer hanya dikopi dari dan ke aliran tersebut.
Untuk membaca dan menulis data karakter yang bisa dimengerti manusia, kelas utamanya adalah Reader dan Writer. Semua kelas aliran karakter merupakan kelas turunan dari salah satu dari kelas abstrak ini. Jika suatu angka akan ditulis dalam aliran Writer, komputer harus bisa menerjemahkannya ke dalam rangkaian karakter yang bisa dibaca maunsia.
Membaca angka dari aliran Reader menjadi variabel numerik juga harus diterjemahkan, dari deretan karakter menjadi rangkaian bit yang dimengerti komputer. (Meskipun untuk data yang terdiri dari karakter, seperti dari editor teks, masih akan ada beberapa terjemahan yang dilakukan. Karakter disimpan dalam komputer dalam nilai Unicode 16-bit. Bagi orang yang menggunakan alfabet biasa, data karakter biasanya disimpan dalam file dalam kode ASCII, yang hanya menggunakan 8-bit. Kelas Reader dan Writer akan menangani perubahan dari 16-bit ke 8-bit dan sebaliknya, dan juga menangani alfabet lain yang digunakan negara lain.)
Adalah hal yang mudah untuk menentukan apakah kita harus menggunakan aliran byte atau aliran karakter. Jika kita ingin data yang kita baca/tulis untuk bisa dibaca manusia, maka kita gunakan aliran karakter. Jika tidak, gunakan aliran byte. System.in dan System.out sebenarnya adalah aliran byte dan bukan aliran karakter, karenanya bisa menangani input selain alfabet, misalnya tombol enter, tanda panah, escape, dsb.
Kelas aliran standar yang akan dibahas berikutnya didefinisikan dalam paket java.io beserta beberapa kelas bantu lainnya. Kita harus mengimpor kelas-kelas tersebut dari paket ini jika kita ingin menggunakannya dalam program kita. Artinya dengan menggunakan "import java.io.*" di awal kode sumber kita.
Aliran tidak digunakan dalam GUI, karena GUI memiliki aliran I/O tersendiri. Akan tetapi kelas-kelas ini digunakan juga untuk file atau komunikasi dalam jaringan. Atau bisa juga digunakan untuk komunikasi antar thread yang sedang bekerja secara bersamaan. Dan juga ada kelas aliran yang digunakan untuk membaca dan menulis data dari dan ke memori komputer.

Listener

Supaya suatu event berarti, suatu program harus bisa mendeteksi event dan bereaksi akan event tersebut. Untuk mendeteksi suatu event, suatu program harus mendengarkannya. Mendengarkan event ini dilakukan oleh objek yang berna,a pendengar event (event listener). Objek listener harus memiliki metode instansi untuk menangani event yang didengarkannya. Bentuknya bervariasi tergantung dari jenis event yang ditanganinya.
Ada beberapa hal detail yang harus diingat untuk bisa bekerja dengan event. Beberapa langkah yang harus diingat :
1. Menambahkan import paket yang dibutuhkan, misalnya "org.eclipse.swt.events"
2. Mendeklarasikan kelas yang mengimplementasikan interface suatu listener
3. Menambahkan aksi yang dilakukan oleh kelas baru tersebut. Aksi ini adalah aksi yang dilakukan untuk menangani suatu event
4. Mendaftarkan event tersebut ke komponen yang mungkin memberikan event.
Objek apapun bisa bertindah sebagai event listener asalkan ia mengimplementasikan interface yang tepat. Suatu komponen dapat mendengarkan event yang dihasilkannya sendiri. Suatu kelas dapat dibuat secara khusus hanya untuk mendengarkan suatu event. Kebanyakan orang menganggap lebih mudah untuk menggunakan kelas bertingkat anonim untuk mendengarkan suatu objek. (Kelas bertingkat anonim telah dibahas sebelumnya di sini).
Seperti hanya Event, SWT memiliki dua jenis listener : tanpa tipe dan bertipe. Masing-masing digunakan untuk menangani event tanpa tipe dan event bertipe.
Listener Tanpa Tipe (untuk menangani event tanpa tipe)
nterface generik yang digunakan untuk menangai event tanpa tipe dinamakan Listener. Listener tanpa tipe dapat ditambahkan pada suatu widget dengan menggunakan metode addListener().
Metode addListener() memiliki bentuk seperti
addListener(int jenisEvent, Listener listener)
Metode ini akan menambah listener ke dalam koleksi listener yang akan dipanggil ketika event tipe tertentu terjadi. Ketika suatu event terjadi, maka listener akan dipanggil dengan menggunakan metode handleEvent().
Contoh berikut mengilustrasikan bagaimana menambah suatu Listener ke dalam suatu widget, yang akan dipanggil ketika event SWT.Dispose terjadi.
widget.addListener(SWT.Dispose, new Listener() {
    public void handleEvent(Event event) {
        // widget was disposed
    }
});
Perhatikan bahwa bentuk di atas menggunakan kelas anonim yang langsung diturunkan dari interface Listener. Di dalam kelas anonim tersebut, metode handleEvent() harus diimplementasikan, di mana implementasinya adalah tugas yang harus dilakukan ketika widget dihapus.
Jika beberapa listener ditambahkan, maka mereka akan dipanggil dengan urutan ketika mereka ditambahkan (first in first called). Artinya listener pertama diberi kesempatan untuk mengolah event (mungkin untuk memfilter sejumlah data) sebelum listener lain melakukan tugasnya. Kita juga bisa menambah listener yang sama beberapa kali, yang artinya listener tersebut akan dipanggil beberapa kali.
Kita bisa menghapus listener dari suatu widget dengan menggunakan metode removeListener(). Bentuknya adalah sebagai berikut
removeListener(int jenhsEvent, Listener listener)Untuk menghapus suatu listener, kita harus memberikan instansi yang persisi sama ketika listener tersebut ditambahkan. JIka beberapa instansi listener yang sama sudah ditambahkan sebelumnya, maka kita harus menghapusnya berulang kali sejumlah ia ditambahkan. Secara umum, menghapus suatu listener mungkin tidak diperlukan. Listener akan diambil oleh pemulung memori ketika suatu widget dihapus dan listener ini tidak lagi digunakan di manapun di dalam program.
Kita juga bisa memanggil suatu listener untuk melakukan tugas tertentu, yaitu dengan menggunakan metode notifyListeners, yang memiliki bentuk seperti
notifyListeners(int jenisEvent, Event event)jenisEvent adalah jenis event yang akan dilakukan, dan Event adalah objek yang berisi event yang akan dilakukan. Hal penting yang harus dicatat adalah memanggil metode notifyListeners() tidak menyebabkan event akan benar-benar terjadi. Misalnya memanggil notifyListeners() dengan jenis SWT.MouseDown tidak akan menyebabkan tombol terlihat seperti ditekan. Dan juga memanggil notifyListeners() tidak menjamin bahwa semua data pada event terinisialisasi seperti pada event sesungguhnya.
Listener Bertipe (untuk menangani Event bertipe)
Karena event bertipe dibuat mengikuti pola listener pada JavaBeans, penggunaan listener bertipe sangat mirip dengan penggunaan listener pada AWT/Swing.
Misalnya untuk mendengarkan event ketika suatu widget dihapus, maka aplikasi bisa menggunakan addDisposeListener(), yang memiliki bentuk seperti
addDisposeListener(DisposeListener listener)
Metode ini menambahkan listener ke dalam koleksi listener yang akan dipanggil ketike suatu widget dihapus. Ketika suatu widget dihapus, maka listener akan dipanggil dengan memanggil metode widgetDisposed().
Potongan kode berikut digunakan untuk menangani event ketika suatu widget dihapus.
widget.addDisposeListener(new DisposeListener() {
    public void widgetDisposed(DisposeEvent dvent) {
        // widget was disposed
    }
});
DisposeListener adalah suatu interface. Jika ada lebih dari satu metode yang didefinisikan dalam listener, maka SWT akan secara otomatis menambahkan kelas adapter yang berisi implementasi kosong dari metode-metode yang didefinisikan pada interface tersebut. Misalnya interface SelectionListener memiliki dua metode, yaitu widgetSelected() dan widgetDefaultSelected, yang keduanya mengambil argumen bertipe SelectionEvents. Dalam hal ini kelas SelectionAdapter tersedia untuk memberikan implementasi kosong untuk setiap metode. Kelas adapter ini hanyalah sebagai kelas bantu yang sesuai dengan konvensi pada listener JavaBeans.
Listener bertipe bisa dihapus dengan menggunakan metode penghapus untuk setiap listner. Misalnya, listener untuk event ketika suatu widget dihapus bisa dibuang dengan menggunakan removeDisposeListener(), yang memiliki bentuk
removeDisposeListener(DisposeListener listener)listener adalah objek listener yang akan dihapus dari koleksi listener yang dipanggil ketika widget dihapus.
Tabel berikut merangkum event bertipe, nama interface listener yang menanganinya, serta metode pada interface tersebut, dibandingkan dengan listener tanpa tipe.
Event BertipeInterface ListenerMetodeJenis Event Tanpa Tipe
ArmEventArmListenerwidgetArmed(ArmEvent)SWT.Arm
ControlEventControlListener (dan ControlAdapter)controlMoved(ControlEvent)
controlResized(ControlEvent)
SWT.Move
SWT.Resize
DisposeEventDisposeListenerwidgetDisposed(DisposeEvent)SWT.Dispose
FocusEventFocusListener (dan FocusAdapter)focusGained(FocusEvent)
focusLost(FocusEvent)
SWT.FocusIn
SWT.FocusOut
HelpEventHelpListenerhelpRequested(HelpEvent)SWT.Help
KeyEventKeyListener (dan KeyAdapter)keyPressed(KeyEvent)
keyReleased(keyEvent)
SWT.KeyDown
SWT.KeyUp
MenuEventMenuListener (dan MenuAdapter)menuHidden(MenuEvent)
menuShown(MenuEvent)
SWT.Hide
SWT.Show
ModifyEventModifyListenermodifyText(ModifyEvent)SWT.Modify
MouseEventMouseListener (dan MouseAdapter)mouseDoubleClick(MouseEvent)
mouseDown(MouseEvent)
mouseUp(MouseEvent)
SWT.MouseDoubleClick
SWT.MouseDown
SWT.MouseUp
MouseEventMouseMoveListenermouseMove(MouseEvent)SWT.MouseMove
MouseEventMouseTrackListener (dan MouseTrackAdapter)mouseEnter(MouseEvent)
mouseExit(MouseEvent)
mouseHover(MouseEvent)
SWT.MouseEnter
SWT.MouseExit
SWT.MouseHover
PaintEventPaintListenerpaintControl(PaintEvent)SWT.Paint
SelectionEventSelectionListener (dan SelectionAdapter)widgetDefaultSelected(SelectionEvent)
widgetSelected(SelectionEvent)
SWT.DefaultSelection
SWT.Selection
ShellEventShallListener (dan ShellAdapter)shellActivated(ShellEvent)
shellClosed(ShellEvent)
shellDeactivated(ShellEvent)
shellIconified(ShellEvent)
shellDeiconified(ShellEvent)
SWT.Activate
SWT.Close
SWT.Deactivate
SWT.Iconify
SWT.Deiconify
TraverseEventTraverseListenerkeyTraversed(TraverseEvent)SWT.Traverse
TreeEventTreeListener (dan TreeAdapter)treeCollapsed(TreeEvent)
treeExpanded(TreeEvent)
SWT.Collapse
SWT.Expand
VerifyEventVerifyListenerverifyText(VerifyEvent)SWT.Verify