1. Pemantauan acara
Kode Uji 1:
Paket cn.javastudy.summary; import java.awt.*; import java.awt.event.*; kelas publik testtextfield {public static void main (string args []) {myframeTextField () baru; }} kelas myframetextField memperluas frame {myframetextField () {textfield tf = new TextField (); Tambahkan (TF); tf.addactionListener (monitor baru ()); tf.setechochar ('*'); / * * Metode setechochar () ini adalah untuk mengatur karakter yang ditampilkan saat memasukkan dalam kotak teks. Di sini diatur ke *, sehingga konten input apa pun akan ditampilkan sebagai *, tetapi Anda masih dapat melihat konten input saat mencetak */ setVisible (true); mengemas(); }} kelas monitor3 mengimplementasikan ActionListener { / * * Semua metode dalam antarmuka adalah publik (publik) * Jadi ketika menyalin void actionPerformed (ActionEvent e) dari dokumen API, Anda harus menambahkan publik di depan void * /public void actionPerformed (actionEvent e) { / * Informasi yang relevan dari peristiwa tersebut dikapsulasi di objek. Informasi yang relevan dari acara tersebut dapat diperoleh melalui metode yang relevan dari objek E*/ textfield tf = (textfield) e.getSource (); / * * getSource () adalah untuk mendapatkan sumber acara. Catatan: Saat Anda mendapatkan sumber acara ini, * Perlakukan sebagai kelas induk Textfield. Metode definisi getSource () adalah: "Objek publik getsource ()" Nilai pengembalian adalah objek objek, * Jadi Anda harus melemparkannya ke objek tipe TextField * jika Anda ingin mengakses Objek Sumber Acara dari kelas lain di satu kelas, Anda dapat menggunakan metode getSource ()/ System.out.println (tf.gettext ());// tf.g.g. tf.setText (""); // hapus konten di kotak teks}} Kode Uji 2:
Paket cn.javastudy.summary; import java.awt.*; impor java.awt.event.*; testaction class publicevent2 {public static void main (string args []) {frame f = bingkai baru ("testactionevent"); Tombol btn1 = tombol baru ("Mulai"); Tombol btn2 = tombol baru ("berhenti"); Monitor2 m2 = monitor2 baru (); // Buat objek mendengarkan btn1.addactionListener (m2); /*Objek mendengarkan mendengarkan tindakan dua tombol pada saat yang sama*/ btn2.addactionListener (m2); btn2.setactionCommand ("GameOver"); // Tetapkan informasi pengembalian setelah menjalankan perintah klik BTN2 F.Add (btn1, borderlayout.north); f.add (btn2, borderlayout.center); f.pack (); f.setVisible (true); }} class monitor2 mengimplementasikan actionListener {public void actionPerformed (actionEvent e) {system.out.println ("tombol telah ditekan,"+"Info relatif adalah:/n"+e.getactionCommand ()); /* Gunakan Objek Mendengarkan yang dikembalikan untuk memanggil metode GetActionCommand () untuk mendapatkan informasi pengembalian setelah dua tombol menjalankan perintah klik. Menurut berbagai informasi pengembalian, tombol mana yang merupakan operasi saat ini. BTN1 tidak menggunakan metode setActionCommand () untuk diatur, sehingga informasi yang dikembalikan oleh BTN1 adalah teks yang ditampilkan pada tombol*/}}2. Pemantauan Acara TextField
Kode Uji:
Paket cn.javastudy.summary; import java.awt.*; import java.awt.event.*; kelas publik testtextfield {public static void main (string args []) {myframeTextField () baru; }} kelas myframetextField memperluas frame {myframetextField () {textfield tf = new TextField (); Tambahkan (TF); tf.addactionListener (monitor baru ()); tf.setechochar ('*'); / * * Metode setechochar () ini adalah untuk mengatur karakter yang ditampilkan saat memasukkan dalam kotak teks. Di sini diatur ke *, sehingga konten input apa pun akan ditampilkan sebagai *, tetapi Anda masih dapat melihat konten input saat mencetak */ setVisible (true); mengemas(); }} kelas monitor3 mengimplementasikan ActionListener { / * * Semua metode dalam antarmuka adalah publik (publik) * Jadi ketika menyalin void actionPerformed (ActionEvent e) dari dokumen API, Anda harus menambahkan publik di depan void * /public void actionPerformed (actionEvent e) { / * Informasi yang relevan dari peristiwa tersebut dikapsulasi di objek. Informasi yang relevan dari acara tersebut dapat diperoleh melalui metode yang relevan dari objek E*/ textfield tf = (textfield) e.getSource (); / * * getSource () adalah untuk mendapatkan sumber acara. Catatan: Saat Anda mendapatkan sumber acara ini, * Perlakukan sebagai kelas induk Textfield. Metode definisi getSource () adalah: "Objek publik getsource ()" Nilai pengembalian adalah objek objek, * Jadi Anda harus melemparkannya ke objek tipe TextField * jika Anda ingin mengakses Objek Sumber Acara dari kelas lain di satu kelas, Anda dapat menggunakan metode getSource ()/ System.out.println (tf.gettext ());// tf.g.g. tf.setText (""); // hapus konten di kotak teks}} Menerapkan kalkulator sederhana menggunakan kelas TextField
paket cn.javastudy.summary; import java.awt.*; import java.awt.event.*; kelas publik testmath {public static void main (string args []) {tfframe () baru; }}/* Berikut ini terutama untuk melengkapi tata letak elemen kalkulator*/kelas tfframe memperluas bingkai {tfframe () {/** Buat 3 kotak teks dan tentukan ukuran awal mereka menjadi 10 karakter dan 15 karakter masing -masing. Berikut adalah metode konstruksi lain dari TextField Class Textfield Publicfield (kolom int) */ TextField num1 = Textfield baru (10); TextField num2 = TextField baru (10); TextField num3 = Textfield baru (15); /* Buat tombol tanda yang sama*/ tombol btnequal = tombol baru ("="); btnequal.addactionListener (mymonitor baru (num1, num2, num3)); /* Tambahkan pendengar ke tombol tanda sama sehingga peristiwa respons terjadi setelah mengklik tombol*/ label lblplus = label baru ("+"); /* "+" adalah teks statis, jadi gunakan kelas label untuk membuat objek teks statis*/ setLayout (flowlayout baru ()); /* Ubah tata letak borderlayout default frame ke flowlayout tata letak*/ add (num1); tambahkan (lblplus); tambahkan (num2); tambahkan (btnequal); tambahkan (num3); mengemas(); setVisible (true); }} kelas myMonitor mengimplementasikan ActionListener {TextField num1, num2, num3; / * * Untuk mengaktifkan mendengarkan tombol untuk mengerjakan kotak teks, * Oleh karena itu, tiga objek TextField di kelas kustom mymonitor didefinisikan dalam NUM1, NUM2, NUM3, * Ini juga mendefinisikan metode konstruktor kelas mymonitor. Metode konstruktor ini memiliki tiga parameter tipe TextField, * digunakan untuk menerima tiga parameter jenis TextField yang ditularkan dari kelas TFFRAME * kemudian menetapkan tiga parameter yang diterima jenis TextField ke tiga parameter jenis TextField yang dinyatakan di kelas ini. Kemudian proses num1, num2, num3 dalam metode actionPerformed () */ mymonitor publik (textfield num1, textfield num2, textfield num3) {this.num1 = num1; this.num2 = num2; this.num3 = num3; } public void actionPerformed (ActionEvent e) { /* Informasi yang relevan dari acara tersebut dienkapsulasi dalam objek e. Informasi yang relevan dari peristiwa tersebut dapat diperoleh melalui metode yang relevan dari objek E*/ int n1 = integer.parseint (num1.getText ());/*Num1 objek memanggil metode getText () untuk mendapatkan string teks yang ditampilkan dengan sendirinya*/ int n2 = integer.parseint (num2.gettext ());/*num2 num2 num2 num2 num2 num2 num2 num2 num2 num2 num2 num2 num2 num2 num2 num2 num2 num num3.setText ("" + (n1 + n2));/* objek num3 memanggil metode settext () untuk mengatur teks tampilannya sendiri*/ num1.setText (""); / * Setelah perhitungan selesai, hapus konten kotak teks NUM1 dan NUM2 */ num2.setText (""); // num3.setText (string.ValueOf (((n1+n2))); /* Ketika string terhubung dengan semua jenis data menggunakan "+", string harus berupa string. * Berikut adalah string kosong dan nomor tipe int, sehingga nomor tipe int yang diperoleh oleh (n1+n2) dapat secara langsung dikonversi menjadi string. * Ini adalah trik kecil untuk mengubah tipe data dasar lainnya menjadi string. * Anda juga dapat menggunakan "String.ValueOf ((N1+N2))" untuk mengonversi jumlah (n1+n2) menjadi string */}} Penggunaan klasik di Java: memegang referensi ke kelas lain dalam satu kelas
Paket cn.javastudy.summary; import java.awt.*; impor java.awt.event.*; kelas publik testmath1 {public static void main (string args []) {ttmyframe baru (). launchframe (); /* Buat objek TTMYFRAME dan hubungi metode lauchframe () untuk menampilkan formulir kalkulator*/}}/* Buat antarmuka formulir dari kalkulator*/kelas ttmyframe memperluas bingkai {/* Enkapsulasi kode yang merancang formulir kalkulator ke dalam metode*/textfield num1, num2, num3; public void launchframe () {num1 = TextField baru (10); num2 = Textfield baru (15); num3 = Textfield baru (15); Label lblplus = label baru ("+"); Tombol btnequal = tombol baru ("="); btnequal.addactionlistener (mymonitorbtNequal (this)) baru; setLayout (flowlayout baru ()); tambahkan (num1); tambahkan (lblplus); tambahkan (num2); tambahkan (btnequal); tambahkan (num3); mengemas(); setVisible (true); }}/ * * Di sini, dengan mendapatkan referensi ke kelas TTMYFRame, dan kemudian menggunakan referensi ini untuk mengakses variabel anggota di kelas TTMYFRame * pendekatan ini jauh lebih baik daripada metode sebelumnya untuk mengakses secara langsung variabel anggota di kelas TTMYFRAME, * Anda perlu mengakses anggota anggota di kelas TTMYFRAME. * Objek kelas TTMYFRAME ini seperti pembantu rumah tangga besar, dan saya memberi tahu pembantu rumah tangga besar bahwa saya ingin mengakses variabel anggota di kelas TTMYFRAME, * referensi pembantu rumah tangga besar akan membantu saya menemukannya, dan saya tidak perlu lagi menemukannya. * Penggunaan referensi ke kelas lain ini dalam satu kelas adalah penggunaan yang sangat khas* Gunakan referensi yang diperoleh untuk mengakses semua anggota kelas lain dalam satu kelas*/kelas mymonitorBtNequal mengimplementasikan ActionListener {ttmyframe ttmf = null; public mymonitorBtNequal (ttmyframe ttmf) {this.ttmf = ttmf; } public void actionPerformed (actionEvent e) {int n1 = integer.parseint (ttmf.num1.getText ()); int n2 = integer.parseint (ttmf.num2.getText ()); ttmf.num3.setText ("" + (n1 + n2)); ttmf.num1.setText (""); ttmf.num2.settext (""); }}Hasil operasi adalah sebagai berikut:
AKU AKU AKU. Kelas internal
Contoh kelas internal:
Paket cn.javastudy.summary; import java.awt.*; impor java.awt.event.*; kelas publik testmath3 {public static void main (string args []) {mymathframe baru (). launchframe (); }} kelas mymathframe memperluas frame {textfield num1, num2, num3; public void launchframe () {num1 = TextField baru (10); num2 = Textfield baru (15); num3 = Textfield baru (15); Label lblplus = label baru ("+"); Tombol btnequal = tombol baru ("="); btnequal.addactionlistener (mymonitor baru ()); setLayout (flowlayout baru ()); tambahkan (num1); tambahkan (lblplus); tambahkan (num2); tambahkan (btnequal); tambahkan (num3); mengemas(); setVisible (true); } /** Kelas mymonitor ini adalah kelas dalam, yang mendefinisikan kelas myframe di kelas myframe yang disebut kelas pembungkus* / /** Manfaat menggunakan kelas dalam:* Manfaat besar pertama adalah bahwa ia dapat mengakses semua variabel dan metode yang tidak ada di kelas Num. (kelas eksternal),* Anda dapat secara langsung mengaksesnya di mymonitor (kelas dalam)* Ini setara dengan objek kelas internal yang memiliki referensi ke objek kelas eksternal secara default saat membuat objek kelas eksternal*/ kelas privat mymonitor mengimplementasikan ActionListener {public void actionPerformed (ActionEvent e) {int n1 = integer.parkser () (num1 () (ActionEvent e) {int n1 = integer.parkser (() (() (() (() (num (num (() {integer.parker (num) {integer. int n2 = integer.parseint (num2.getText ()); num3.setText ("" + (n1 + n2)); num1.setText (""); num2.setText (""); }}}Manfaat besar kelas internal adalah:
4. Grafik
Kode Uji:
paket cn.javastudy.summary; import java.awt.*; kelas publik testpaint {public static void main (string args []) {new mypaint (). launchframe (); /*Metode cat (grafik G) tidak ditampilkan dalam metode utama (), tetapi setelah membuat bentuk bingkai, Anda dapat melihat bahwa lingkaran dan persegi panjang ditarik pada bentuk bingkai. Ini karena metode cat () adalah metode khusus. Ini akan secara otomatis menelepon secara implisit saat membuat formulir bingkai. Ketika kita meminimalkan bentuk bingkai dan membukanya lagi, kita akan memanggil metode cat () lagi dan menggambar lingkaran dan persegi panjang pada bentuk bingkai. Artinya, setiap kali kita perlu mengecat ulang formulir bingkai, metode cat () akan secara otomatis disebut kelas*/}} MyPaint Extends Frame {public void launchFrame () {setBounds (200.200.640.480); setVisible (true); } public void cat (grafik g) { / *cat (grafik g) Metode memiliki parameter tipe grafis g kita dapat memperlakukan g ini sebagai pelukis, pelukis memegang kuas di tangannya, dan kita menggambar berbagai gambar yang kita inginkan dengan mengatur warna dan bentuk kuas * / / *Atur warna kuas * / g.setcolor (warna.); g.filloval (100.100.100.100);/*Gambar elips solid*/ g.setColor (color.green); G.Fillrect (150.200.200);/*Gambar persegi panjang yang solid*//*Dua baris kode di bawah ini ditulis untuk kebiasaan pemrograman yang baik dalam program penulisan. Sekarang Anda harus mengembalikan warna awal kuas, yang setara dengan membersihkan warna pada sikat setelah pelukis menggunakan kuas*/ warna c = g.getColor (); g.setColor (c); }}Hasil Menjalankan:
5. Adaptor Acara Mouse
Kode Uji:
Paket cn.galc.test; import java.awt.*; import java.awt.event.*; import java.util.*; kelas publik myMouseAdapter {public static void main (string args []) {myframe baru ("gambar ..."); }} kelas myframe memperluas frame {arraylist points = null; Myframe (string s) {super (s); poin = ArrayList baru (); setLayout (null); setbounds (300.300.400.300); this.setBackground (warna baru (204.204.255)); setVisible (true); this.addmouseListener (monitor baru ()); } public void cat (grafik g) {iterator i = points.iterator (); while (i.hasnext ()) {point p = (point) i.next (); G.SetColor (Color.Blue); G.Filloval (PX, PY, 10,10); }} public void addPoint (point p) {points.add (p); }} monitor kelas memperluas mouseadapter {public void mousePressed (mouseEvent e) {myframe f = (myframe) e.getSource (); f.addpoint (titik baru (e.getx (), e.gety ())); f.repaint (); }}6. Windows Event
Kode Uji:
Paket cn.galc.test; import java.awt.*; import java.awt.event.*; kelas publik testwindowclose {public static void main (string args []) {windowframe baru ("tutup windowframe"); }} class windowframe memperluas frame {public windowframe (string s) {super (s); Setbounds (200.200.400.300); setLayout (null); Securbackground (Warna Baru (204.204.255)); setVisible (true); this.addwindowlistener (windowmonitor baru ());/*Dengarkan tindakan formulir ini, merangkum semua informasi tindakan ke dalam suatu objek dan meneruskannya ke dalam kelas mendengarkan*/this.addwindowlistener (/*mendefinisikan kelas dalam metode ini, yang disebut kelas ini, tetapi tidak ada kelas, tetapi no -class yang disebut No. No. Kelas anonim sebagai kelas WindowAdapter. System.exit (-1); } /*Kelas mendengarkan juga didefinisikan sebagai kelas internal* /kelas WindowMonitor memperluas WindowAdapter { /*WindowAdapter (adaptor jendela) mengimplementasikan antarmuka mendengarkan WindowListener. Menulis ulang semua metode di antarmuka WindowListener. Jika Anda secara langsung menggunakan kelas WindowMonitor khusus untuk secara langsung mengimplementasikan antarmuka WindowListener, Anda harus menulis ulang semua metode di antarmuka WindowListener. Tetapi sekarang Anda hanya perlu menggunakan salah satu metode ini. Oleh karena itu, Anda dapat mewarisi subclass dari antarmuka mendengarkan WindowListener dan menulis ulang metode yang perlu Anda gunakan di subkelas ini. Metode ini jauh lebih sederhana dan lebih nyaman daripada secara langsung menerapkan antarmuka mendengarkan WindowListener. */*Menulis ulang metode windowclosing (windowevent e) yang perlu digunakan*//*public void windowclosing (windowevent e) {setVisible (false);/*Atur formulir untuk tidak ditampilkan, dan formulir tertutup*/system.exit (0);/*Keluar secara normal*/}}}}7. Acara Respons Keyboard - KeyEvent
Kode Uji:
Paket cn.galc.test; import java.awt.*; import java.awt.event.*; kelas publik testkeyevent {public static void main (string args []) {baru keyframe ("Keyboard Response Event"); }} class keyframe memperluas frame {public keyframe (string s) {super (s); Setbounds (200.200.400.300); setLayout (null); setVisible (true); addKeyListener (keymonitor baru ()); } /*Tentukan kelas mendengarkan keyboard khusus sebagai kelas internal. Kelas mendengarkan ini mewarisi dari kelas keyboard adaptor KeyAdapter. Mewarisi dari kelas KeyAdapter. Agar ringkas dan nyaman, Anda hanya perlu menulis ulang metode yang perlu Anda gunakan. Metode ini lebih sederhana dan lebih nyaman daripada secara langsung menerapkan antarmuka KeyListener. Jika Anda secara langsung mengimplementasikan antarmuka KeyListener, Anda harus menulis ulang semua metode dalam antarmuka KeyListener, tetapi hanya satu metode yang benar -benar digunakan. Dengan cara ini, menulis ulang metode lain tetapi tidak menggunakannya pasti akan melakukan pekerjaan yang tidak berguna*/ kelas keymonitor memperluas keyAdapter {public void keypressed (keyevent e) {int keycode = e.getKeyCode (); /*Gunakan metode getKeyCode () untuk mendapatkan kode virtual dari kunci* / / /*Jika kode virtual dari tombol yang diperoleh sama dengan kode virtual dari tombol UP, itu berarti bahwa tombol yang saat ini ditekan adalah tombol ke atas. VK_UP berarti bahwa kode virtual untuk mendapatkan tombol UP. Setiap kunci dalam keyboard sesuai dengan kode virtual. Kode virtual ini didefinisikan sebagai konstanta statis di kelas Keyevent. Oleh karena itu, Anda dapat menggunakan bentuk "nama kelas. Nama konstan statis" untuk mengakses konstanta statis ini*/ if (keycode == keyevent.vk_up) {System.out.println ("Anda menekan tombol UP"); }}}}/*Keyboard menangani peristiwa seperti ini: setiap kunci sesuai dengan kode virtual. Ketika tombol tertentu ditekan, sistem akan menemukan kode virtual yang sesuai dengan tombol ini untuk menentukan tombol mana yang saat ini ditekan*/Melalui artikel ini, saya belajar pemrograman GUI dengan Anda. Saya harap Anda memiliki pemahaman yang lebih komprehensif tentang pemrograman GUI. Ada lebih dari ini tentang pemrograman GUI, dan Anda perlu terus belajar.