Pada materi kali ini merupakan lanjutan dari materi sebelumnya yang telah saya bahas yaitu Java Programming for Programmer - The Basics of Java GUI (PART 4). Masih dalam topik yang sama, dimana saya akan membahas mengenai dasar-dasar GUI pada Java. Materi ini merupakan suatu penerapan langsung yang saya tuangkan kedalam wadah nyata dari perkembangan teknologi masa modern saat ini, tak lain ialah steemit yang menjadi pusat penerapan ilmu pengetahuan "ya... tentu saja! menurut pendapat saya sendiri". Maka dari itu langsung saja pada pokok pembahasan berikut ini.
Menciptakan GUI
Baris 22 menetapkan tata letak FrameBidangTeks menjadi FlowLayout. Baris 25 menciptakan bidangTeks1 dengan 10 kolom teks. Lebar kolom teks dalam pixel ditentukan dengan lebar rata-rata atas sebuah karakter didalam bidang teks. Ketika teks ditampilkan pada sebuah bidang teks dan teks tersebut lebih besar dari bidang teks, penggalan teks di sisi kanan tidak akan kelihatan. Jika anda mengetik pada sebuah bidang teks dan kursor meraih tepi kanan, maka teks pada tepi kiri akan terdorong menjauh ke sisi kiri bidang teks dan tidak akan terlihat lagi. Pengguna dapat memanfaatkan kunci anak panah kiri dan kanan untuk menjelajahi teks. Baris 26 menambahkan bidangTeks1 pada JFrame.
Baris 29 menciptakan bidangTeks2 dengan teks awal "Masukkan teks disini" untuk ditampilkan pada bidang teks. Lebar bidang teks ditentukan oleh lebar dari teks default yang di spesifikasi pada konstruktor. Baris 30 menambahkan bidangTeks2 pada JFrame.
Baris 33 menciptakan bidangTeks3 dan memanggil konstruktor JTextField dengan dua argumen teks default "Bidang teks tidak bisa diubah" dan lebar bidang teks dalam kolom (31). Baris 34 menggunakan metode setEditable (diwarisi oleh JTextField dari kelas JTextComponent) untuk membuat bidang teks agar tidak bisa di edit, dimana pengguna tidak bisa memodifikasi teks pada bidang teks. Baris 35 menambahkan bidangTeks3 pada JFrame.
Baris 38 menciptakan bidangPassword dengan teks "Teks tersembunyi" untuk ditampilkan pada bidang teks. Lebar bidang teks ditentukan oleh lebar dari teks default. Ketika anda mengeksekusi aplikasi, perhatikan bahwa teks ditampilkan sebagai string dari asterisk. Baris 39 menambahkan bidangPassword pada JFrame.
Langkah-langkah untuk Melakukan Penanganan Event
Contoh ini menampilkan sebuah dialog pesan yang memuat teks dari sebuah bidang teks ketika pengguna menekan Enter pada bidang teks tersebut. Sebelum aplikasi merespons sebuah event pada komponen GUI tertentu, anda harus:
- Menciptakan sebuah kelas yang merepresentasikan event handler dan mengimplementasikan antarmuka yang sesuai, yang dikenal dengan antarmuka event listener.
- Mengindikasikan bahwa sebuah objek dari kelas pada langkah 1 harus diberi tahu ketika event terjadi yang dikenal dengan pendaftaran event handler.
Menggunakan Sebuah Kelas Bersarang untuk Mengimplementasikan Event Handler
Semua kelas yang dibahas sejauh ini disebut dengan kelas level atas, dimana ia dideklarasikan didalam kelas lain. Java membolehkan anda untuk mendeklarasikan kelas didalam kelas lain, yang dikenal dengan kelas bersarang. Kelas bersarang dideklarasikan static atau tak-static. Kelas bersarang tak-static dikenal dengan kelas inner dan sering digunakan untuk mengimplementasikan event handler.
Sebuah Objek kelas inner harus diciptakan oleh objek dari kelas level atas yang memuat kelas inner. Setiap objek kelas inner secara implisit mempunyai referensi atas objek dari kelas level atas. Objek kelas inner diperbolehkan untuk menggunakan referensi implisit ini secara langsung mengakses semua variabel dan metode dari kelas level atas. Kelas bersarang yang dideklarasikan static tidak memerlukan objek dari kelas level atas dan tidak secara implisit memiliki referensi atas objek kelas level atas.
Kelas Inner BidangTeksHandler
Penanganan event pada contoh ini dilakukan oleh sebuah objek dari kelas inner private BidangTeksHandler (baris 50-80). Kelas ini dideklarasikan private karena ia hanya akan digunakan untuk menciptakan beberapa event handler untuk bidang-bidang teks didalam kelas level atas FrameBidangTeks. Sama seperti anggota kelas lainnya, kelas inner dapat dideklarasikan public, protected, atau private. Karena event handler cenderung spesifik terhadap aplikasi dimana ia didefinisikan, ia sering kali diimplementasikan sebagai kelas inner private.
Komponen GUI dapat memicu event dalam merespons interaksi pengguna. Setiap event direpresentasikan oleh sebuah kelas dan hanya dapat diproses oleh tipe event handler yang sesuai. Ketika pengguna menekan Enter pada JTextField atau JPasswordField, sebuah ActionEvent (paket java.awt.event) akan terjadi. Event semacam itu diproses oleh sebuah objek yang mengimplementasikan antarmuka ActionListener (paket java.awt.event).
Untuk menangani beberapa event pada contoh ini, kelas inner BidangTeksHandler mengimplementasikan antarmuka ActionListener dan mendeklarasikan satu-satunya metode pada antarmuka tersebut, actionPerformed (baris 53-79). Metode ini menetapkan beberapa tugas yang harus dilakukan ketika sebuah ActionEvent terjadi. Jadi, kelas inner BidangTeksHandler memenuhi langkah 1.
Mendaftarkan Event Handler untuk Setiap Bidang Teks
Pada konstruktor FrameBidangTeks, baris 42 menciptakan sebuah objek BidangTeksHandler dan menugaskannya kepada variabel handler. Metode actionPerformed dari objek ini akan dipanggil secara otomatis ketika pengguna menekan Enter pada sembarang bidang teks GUI. Namun sebelum ini terjadi, program harus mendaftarkan objek ini sebagai event handler untuk setiap bidang teks. Baris 43-46 merupakan beberapa pernyataan pendaftaran event yang menetapkan handler sebagai event handler bagi tiga TextField dan sebuah JPasswordField. Aplikasi memanggil metode addActionListener untuk mendaftarkan event handler bagi setiap komponen. Metode ini menerima sebuah objek ActionListener sebagai argumennya, berupa sebuah objek dari sembarang kelas yang mengimplementasikan ActionListener.
Objek handler merupakan sebuah ActionListener, karena kelas BidangTeksHandler mengimplementasikan ActionListener. Setelah baris 43-46 dieksekusi, objek handler akan mendengar atau mengantisipasi akan terjadinya event. Sekarang ketika pengguna menekan Enter pada salah satu dari keempat bidang teks, metode actionPerformed (baris 53-79) didalam kelas BidangTeksHandler akan dipanggil untuk menangani event. Jika sebuah event handler tidak terdaftar untuk bidang teks tertentu, event yang akan terjadi ketika pengguna menekan Enter pada bidang teks tersebut akan diabaikan oleh aplikasi.
Detail atas Metode ActionPerformed
Pada contoh ini, digunakan metode actionPerformed (baris 53-79) untuk menangani semua event yang dibangkitkan oleh keempat bidang teks. Sumber event adalah komponen GUI yang berinteraksi dengan pengguna. Ketika pengguna menekan Enter saat salah satu dari bidang teks atau bidang password yang aktif, sistem menciptakan sebuah objek ActionEvent unik yang memuat informasi tentang event yang baru saja terjadi, seperti sumber event dan teks pada bidang teks. Sistem melewatkan objek ActionEvent ini kepada metode actionPerformed. Baris 55 mendeklarasikan String yang akan ditampilkan. Variabel itu diinisialisasi dengan string kosong, yaitu sebuah String tanpa karakter. Penyusun mensyaratkan variabel tersebut diinisialisasi untuk berjaga-jaga ketika tidak ada cabang dari if bersarang pada baris 58-75 yang di eksekusi.
Metode getSource (yang dipanggil pada baris 58, 63, 68, dan 73) menghasilkan sebuah referensi terhadap sumber event. Kondisi pada baris 58 bertanya, "Apakah sumber event bidangTeks1?" Kondisini ini membandingkan referensi sumber event menggunakan operator == untuk menentukan apakah keduanya mereferensi objek yang sama. Jika kedua mereferensi ke bidangTeks1, berarti pengguna telah menekan Enter pada bidangTeks1. Kemudian, baris 59-60 menciptakan sebuah String yang memuat pesan yang ditampilkan didalam sebuah kontak pesan pada baris 78. Baris 60 menggunakan metode getActionCommand untuk mendapatkan teks yang diketik oleh pengguna pada bidang teks yang memicu event.
Kelas UjiBidangTeks
Kelas UjiBidangTeks (kode 2.5) memuat metode main yang mengeksekusi aplikasi ini dan menampilkan sebuah objek dari kelas FrameBidangTeks. Ketika anda mengeksekusi aplikasi ini, bahkan bidangTeks3 (yang merupakan JTextField yang tidak bisa di edit) pun dapat memicu sebuah ActionEvent. Selain itu, teks aktual dari password akan ditampilkan ketika anda menekan Enter pada JPasswordField. Tentu saja anda biasanya tidak akan menampilkan teks aktual password. Aplikasi ini menggunakan sebuah objek dari kelas BidangTeksHandler sebagai event listener bagi keempat bidang teks.
alfarisi 📝👍🏻👍🏻
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hahahah oopps ada toke besar :D @saifuldblue jeut ta duk sige pol
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hehe..
Pajan man Jeut taduk.. belum terlalu paham
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Insya Allah singeh jeut taduk pol @saifuldblue
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
folback bg him
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
mohon bantuaanya dan bimbingan
lon dari aceh utara bang
@alfarisi
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Insya Allah siap membantu dan membimbing :D salam dari lhokseumawe @muksalmina03
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks for sharing this post..
I appreciate your post.
Carry on my dear.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thank you so much girl :) I'm very happy because this post can provide benefits @sharminkona
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
This nice post i like your sky. Thanks for sharing education..
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Your welcome girl :) @rkaitra
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
terima kasih bang...! ini sangat berguna👍
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Sama2 juga bang, semoga ini bermanfaat @bangwowor
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
folback bg him
apvote juga wkwkw
bg him kan master
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@alfarisi
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Wkwkwkwk kok na kah sit hino bang him? @zulfajrim ken master lon bang him hahahahahaha
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit