Artikel ini membagikan kode spesifik sistem manajemen Java GUI untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
1. Lengkapi halaman utama Mainui terlebih dahulu (kode adalah sebagai berikut)
paket com.pag_1; impor javax.swing.*; impor java.awt.*; impor java.awt.event.actionevent; impor java.awt.event.actionlistener; kelas publik Mainui memperluas JFRame mengimplementasikan ActionListener {// define Component JButton JB1, JB2, JB3 = NULL; Jradiobutton jrb1, jrb2 = null; JPanel JP1, JP2, JP3, JP4 = NULL; JTextfield JTF = NULL; Jlabel JLB1, JLB2, JLB3 = NULL; Jpasswordfield jpf = null; Buttongroup bg = null; // atur nama pengguna dan kata sandi string final stu_name = "wang xiaoming"; string akhir stu_pwd = "1"; string akhir stu_num = "14140301"; string final tea_name = "wang"; string final tea_pwd = "1"; string final tea_num = "00001"; public static void main (string [] args) {Mainui mui = new Mainui (); } public mainui () {// buat komponen jb1 = jbutton baru ("login"); jb2 = jbutton baru ("reset"); jb3 = jbutton baru ("keluar"); // atur mendengarkan jb1.addactionListener (ini); jb2.addactionlistener (ini); JB3.AddactionListener (ini); jrb1 = jradiobutton baru ("guru"); jrb2 = jradiobutton baru ("mahasiswa"); BG = Buttongroup baru (); BG.Add (JRB1); BG.Add (JRB2); jrb2.setselected (true); // izin pemilihan default dari halaman awal adalah siswa jp1 = jpanel baru (); jp2 = jpanel baru (); jp3 = jpanel baru (); jp4 = jpanel baru (); jlb1 = jlabel baru ("nama pengguna:"); jlb2 = jlabel baru ("kata sandi:"); JLB3 = JLabel baru ("Izin:"); JTF = JTextField baru (10); JPF = JPasswordfield baru (10); // tambahkan ke jpanel jp1.add (jlb1); jp1.add (jtf); jp2.add (jlb2); jp2.add (jpf); jp3.add (jlb3); // tambahkan tag jp3.add (jrb1); jp3.add (jrb2); jp4.add (jb1); // Tambahkan tombol jp4.add (jb2); jp4.add (jb3); // tambahkan this.add (jp1); this.add (jp2); this.add (jp3); this.add (jp4); this.setLayout (GridLayout baru (4,1)); // Pilih GridLayout Layout Manager This.settitle ("Sistem Manajemen Skor Siswa"); this.setsize (300.200); this.setlocation (400, 200); this.setDefaultCloseOperation (jframe.exit_on_close); // Atur saat menutup jendela, pastikan bahwa JVM juga keluar dari ini.setVisible (true); this.setresizable (true); } public void actionPerformed (actionEvent e) {// event penilaian if (e.getactionCommand () == "login") {// Jika guru dipilih if (jrb1.isselected ()) {tealogin (); // terhubung ke halaman metode guru} lain jika (jrb2.isselected ()) // siswa masuk ke sistem {stulogin (); // terhubung ke halaman metode siswa}} lain jika (e.getactionCommand () == "reset") {clear (); }} // Metode penilaian login siswa void stulogin () {if (stu_name.equals (jtf.getText ()) && stu_pwd.equals (jpf.getText ())) {joptionpane.showmessagealog (null, "login berturut -turut!" membuang(); jernih(); Stdui ui = stdui baru (); // Buat antarmuka baru} else if (jtf.getText (). IsEmpty () && jpf.getText (). Isempty ()) {joptionpane.showmessageDialog (null, "Harap masukkan nama pengguna dan kata sandi!", "Pesan cepat", JOPTIONPANE.WARINGINE.WARINGING_MESSAGE_MESSAGE.) } else if (jtf.getText (). isEmpty ()) {jOptionPane.showmessageDialog (null, "Harap masukkan nama pengguna!", "Pesan cepat", joptionpane.warning_message); } else if (jpf.getText (). isEmpty ()) {jOptionPane.showmessageDialog (null, "Harap masukkan nama pengguna!", "Pesan cepat", joptionpane.warning_message); } else if (jpf.getText (). isEmpty ()) {jOptionPane.showmessageDialog (null, "Harap masukkan kata sandi!", "Pesan cepat", joptionpane.warning_message); } else {joptionpane.showmessageDialog (null, "nama pengguna atau kata sandi salah! /nPlease masuk kembali", "pesan cepat", joptionpane.error_message); // Bersihkan kotak input Clear (); }} // Metode penilaian login guru public void tealogin () {if (tea_name.equals (jtf.getText ()) && tea_pwd.equals (jpf.getText ())) {joptionpane.showmessagealog (null, "LOGIN SURESTIFLESS!", " jernih(); membuang(); Terui ui = terui baru (); // Buat antarmuka baru} else if (jtf.getText (). IsEmpty () && jpf.getText (). Isempty ()) {joptionpane.showmessageDialog (null, "Harap masukkan nama pengguna dan kata sandi!", "Pesan cepat", JOPTIONPANE.WARINGINE.WARINGING_MESSAGE_MESSAGE.) } else if (jtf.getText (). isEmpty ()) {jOptionPane.showmessageDialog (null, "Harap masukkan nama pengguna!", "Pesan cepat", joptionpane.warning_message); } else if (jpf.getText (). isEmpty ()) {jOptionPane.showmessageDialog (null, "Harap masukkan kata sandi!", "Pesan cepat", joptionpane.warning_message); } else {joptionpane.showmessagealog (null, "nama atau kata sandi yang tidak menggunakan! /nPlease masuk kembali", "pesan cepat", joptionpane.error_message); jernih(); // Bersihkan kotak input}} // Hapus kotak teks dan kotak kata sandi public void clear () {jtf.settext (""); jpf.settext (""); }} Jalankan Gambar 1
Nama pengguna dan kata sandi adalah sebagai berikut:
2. Lengkapi antarmuka siswa Stuui. Halaman ini memiliki koneksi tombol yang diatur pada antarmuka Mainui (kode adalah sebagai berikut)
paket com.pag_1; import java.awt.*; impor java.awt.event.*; impor javax.swing.*; impor javax.swing.jbutton; import java.awt.color.*; import javax.swing.joptionpane; import com.pag_1.mainui; kelas publik stdui memperluas jframe mengimplementasikan actionListener {// define component jbutton jb1 = new jbutton (); Jbutton jb2 = jbutton baru (); JPanel JP1, JP2, JP3, JP4 = NULL; Jlabel JLB1, JLB2, JLB3, JLB4, JLB5, JLB6 = NULL; public static void main (string [] args) {stdui ui = stdui baru (); } // ******************************** Acara Penghakiman ******************************** // Konstruktor Public Stdui () // tidak dapat dinyatakan sebagai batal !!! Jika tidak, antarmuka baru tidak akan muncul {// membuat komponen jb1 = jbutton baru ("jadwal kursus"); JB1.SetForeground (Color.Blue); jb2 = jbutton baru ("skor kueri"); jb2.setForeground (color.blue); jp1 = jpanel baru (); jp2 = jpanel baru (); jp3 = jpanel baru (); jlb1 = jlabel baru ("name:"); JLB2 = JLabel baru ("Nomor Siswa:"); JLB3 = JLabel baru ("Pengumuman Terbaru:"); jlb3.setForeground (color.red); JLB4 = JLabel baru ("Sekolah kami memegang Pemberitahuan Tes Fisik Siswa"); JLB5 = JLabel baru (Mainui baru (). Stu_name); JLB6 = JLabel baru (Mainui baru (). Stu_num); jp1.add (jlb1); jp1.add (jlb5); jp1.add (jlb2); jp1.add (jlb6); jp2.add (jb1); jp2.add (jb2); jp3.add (jlb3); jp3.add (jlb4); this.add (jp1); this.add (jp2); this.add (jp3); // Atur manajer tata letak this.setLayout (GridLayout baru (4,3,50,50)); this.settitle ("Sistem Manajemen Skor Siswa"); this.setsize (400.300); this.setlocation (200, 200); this.setDefaultCloseOperation (jframe.exit_on_close); this.setVisible (true); jb1.addactionlistener (ini); jb2.addactionlistener (ini); } public void actionPerformed (ActionEvent e) {if (e.getSource () == jb1) {// Tutup antarmuka saat ini dibuang (); Kechengbiaoui baru (); } lain jika (e.getSource () == jb2) {// tutup antarmuka saat ini disimpan (); baru chengjibiaoui (); }}} Jalankan Mainui untuk memasuki siswa pengguna, dan antarmuka siswa berikut akan muncul. Lembar kursus dan permintaan kelas di antarmuka adalah dua tombol yang dapat diklik, yang akan terhubung ke halaman berikutnya dan kemudian langkah berikutnya.
3. Lengkapi antarmuka guru Terui. Ini sama dengan halaman siswa. Ada acara tombol di halaman Mainui dan sambungkan ke halaman Mainui. (Kodenya adalah sebagai berikut)
paket com.pag_1; import java.awt.*; impor java.awt.event.*; impor javax.swing.*; impor javax.swing.jbutton; import com.pag_1.mainui; kelas publik TerUI memperluas jframe mengimplementasikan ActionListener {// define Component JButton JB1, JB2 = NULL; JPanel JP1, JP2, JP3, JP4 = NULL; Jlabel JLB1, JLB2, JLB3, JLB4, JLB5, JLB6 = NULL; public static void main (string [] args) {terui ui = new terui (); } public terui () {// buat komponen jb1 = jbutton baru ("manajemen kursus"); JB1.SetForeground (Color.Blue); JB2 = JButton baru ("Daftar Siswa"); jb2.setForeground (color.blue); jp1 = jpanel baru (); jp2 = jpanel baru (); jp3 = jpanel baru (); jlb1 = jlabel baru ("name:"); JLB2 = JLabel baru ("Nomor Kerja:"); JLB3 = JLabel baru ("Pengumuman Terbaru:"); jlb3.setForeground (color.red); JLB4 = JLabel baru ("Pemberitahuan rumah sakit kami mengadakan tes fisik"); JLB5 = JLabel baru (Mainui baru (). Tea_name); JLB6 = JLabel baru (MainUi baru (). Tea_num); jp1.add (jlb1); jp1.add (jlb5); jp1.add (jlb2); jp1.add (jlb6); jp2.add (jb1); jp2.add (jb2); jp3.add (jlb3); jp3.add (jlb4); this.add (jp1); this.add (jp2); this.add (jp3); this.setLayout (GridLayout baru (4,3,50,50)); // Atur manajer tata letak this.settitle ("Sistem Manajemen Skor Siswa"); this.setsize (400.300); this.setlocation (200, 200); this.setDefaultCloseOperation (jframe.exit_on_close); this.setVisible (true); jb1.addactionlistener (ini); jb2.addactionListener (this);} public void actionPerformed (actionEvent e) {if (e.getSource () == jb1) {Dispose (); baru KechengguanliUi (); // Buat antarmuka baru} else if (e.getSource () == jb2) {Dispose (); Xueshengmingdanui baru (); // Buat antarmuka baru}}} Jalankan Mainui untuk memasuki guru pengguna, dan antarmuka guru berikut akan muncul. Manajemen kursus dan daftar siswa di antarmuka adalah dua tombol yang dapat diklik, yang akan terhubung ke halaman berikutnya dan kemudian langkah -langkah nanti.
4. Lengkapi antarmuka lembar kursus antarmuka siswa (kode sebagai berikut)
package com.pag_1;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.TableColumn;public class KeChengBiaoUI extends JFrame { public KeChengBiaoUI() { intiComponent(); } private void inticomponent () {string [] columnNames = {"Jumlah kelas", "Senin", "Selasa", "Kamis", "Jumat", "Sabtu"}; Objek [] [] obj = objek baru [8] [8]; untuk (int i = 0; i <8; i ++) {for (int j = 0; j <8; j ++) {switch (j) {case 0: obj [0] [0] = "Pelajaran pertama"; OBJ [0] [1] = "Komunikasi Optik Serat"; obj [0] [2] = "medan elektromagnetik"; obj [0] [3] = "Internet of Things"; OBJ [0] [4] = "Eksperimen DSP"; obj [0] [5] = ""; OBJ [0] [6] = "Perbaikan Ponsel"; obj [0] [7] = ""; merusak; Kasus 1: OBJ [1] [0] = "Pelajaran Kedua 2"; OBJ [1] [1] = "Komunikasi Optik Serat"; obj [1] [2] = "medan elektromagnetik"; obj [1] [3] = "Internet of Things"; OBJ [1] [4] = "Eksperimen DSP"; obj [1] [5] = ""; OBJ [1] [6] = "Perbaikan Ponsel"; obj [1] [7] = ""; merusak; Kasus 2: OBJ [2] [0] = "Pelajaran 3"; obj [2] [1] = "android"; obj [2] [2] = ""; obj[2][3] = "; obj[2][4] = "DSP experiment"; obj[2][5] = "Mobile phone repair"; obj[2][6] = "Mobile phone repair"; obj[2][7] = " "; break; case 3: obj[3][0] = "Lesson 4"; obj[3][1] = "Android"; obj[3][2] = " "; OBJ [3] [3] = ""; = "; OBJ [5] = ""; "; obj [6] [4] ="; obj [6] [5] = ""; obj [6] [6] [6] = ""; OBJ [6] [7] = "; Kasus 7: OBJ [7] [0] =" Pelajaran 7 "; Obj [7] [1] =" "; obj [7] [2] =" "; obj [7] [3] =" "; Obj [7] [4] ="; obj [7] [5] = ""; obj [7] [6] = ""; obj [7] [7] [7] = ""; merusak; Kasus 8: OBJ [8] [0] = "Pelajaran 8"; obj [8] [1] = ""; obj [8] [2] = "; obj [8] [3] =" "; obj [8] [4] ="; OBJ [8] [5] = "; obj [8] [6] =" "; obj [8] [7] =" "; break;}}} tabel jtable = jtable baru (obj, kolomnames); kolom tableColumn = null; int columns = tabel.getColumnCount (); for (int i = 0; i <colunums = tabel.getColumnCount (); for (int i = 0; i <colun); i colun =) {); for (int i = 0; i <colun); i colun =) {); for (int i = 0; i <colun); i colun =) {); for (int i = 0; i <colun); i <) {iBoTcolumncount (); for (int i = 0; i <colun m tabel. Table.getColumnmodel (). GetColumn (I); this.setVisible (true);Antarmuka Jadwal Kursus
5. Lengkapi antarmuka kueri kelas siswa (kode sebagai berikut)
package com.pag_1;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.TableColumn;public class ChengJiBiaoUI extends JFrame { public ChengJiBiaoUI() { intiComponent(); } // menginisialisasi bentuk komponen private void inticomponent () {string [] columnNames = {"Jumlah kursus", "nama kursus", "kredit", "poin nilai", "skor", "ujian make-up"}; // Atur nama kolom objek JTable [] [] obj = objek baru [7] [7]; untuk (int i = 0; i <7; i ++) {untuk (int j = 0; j <7; j ++) {switch (j) {case 0: obj [0] [0] = "1"; OBJ [0] [1] = "Komunikasi Fiber Optic"; obj [0] [2] = "2"; obj [0] [3] = "1.5"; obj [0] [4] = "75"; obj [0] [5] = "tidak"; merusak; Kasus 1: OBJ [1] [0] = "2"; obj [1] [1] [1] = "android"; obj [1] [2] = "2"; obj [1] [3] = "1.8"; obj [1] [4] = "5"; obj [1] [5] = "tidak"; merusak; Kasus 2: OBJ [2] [0] = "3"; obj [2] [1] = "Internet of Things"; obj [2] [2] = "1.5"; obj [2] [3] = "1.2"; obj [2] [4] = "70"; obj [2] [5] = "tidak"; merusak; Kasus 3: OBJ [3] [0] = "4"; obj [3] [1] = "medan elektromagnetik"; obj [3] [2] = "2"; obj [3] [3] = "1.6"; obj [3] [4] = "78"; obj [3] [5] = "tidak"; merusak; Kasus 4: OBJ [4] [0] = "5"; OBJ [4] [1] = "Perbaikan Ponsel"; obj [4] [2] = "1.0"; obj [4] [3] = "1.0"; OBJ [4] [4] [4] = "Luar Biasa"; obj [4] [5] = "tidak"; merusak; Kasus 5: OBJ [5] [0] = "6"; obj [5] [1] = "dsp"; obj [5] [2] = "1.0"; obj [5] [3] = "1.0"; obj [5] [4] = "baik"; obj [5] [5] [5] = "tidak"; merusak; Kasus 6: OBJ [6] [0] = "7"; OBJ [6] [1] = "Eksperimen Prinsip Komunikasi"; obj [6] [2] = "1.0"; obj [6] [3] = "1.0"; obj [6] [4] = "baik"; obj [6] [5] = "tidak"; merusak; }}} Tabel jtable = jtable baru (obj, columnNames); // Salah satu kolom TableColumnum Konstruktor Jtable = NULL; // Atur lebar default dan tinggi kolom kolom int jtable = Table.getColumnCount (); untuk (int i = 0; i <colunms; i ++) {column = Table.getColumnModel (). getColumn (i); kolom.setPreferredWidth (100); // Atur lebar default dari setiap kolom ke 100} Table.setAuteSizeMode (jtable.auto_resize_off); // Atur status JTable secara otomatis menyesuaikan daftar, set untuk mematikan jscrollpane scroll = jscrollpane baru (tabel); // Muat jtable dengan jscrollpane, sehingga kolom di luar jangkauan dapat dilihat melalui scrollbar dengan scroll.setsize (300, 50); tambahkan (gulir); this.setlocation (450, 200); this.setVisible (true); this.setDefaultCloseOperation (jframe.exit_on_close); this.pack (); } public static void main (string [] args) {new chengjibiaoui (); }}Antarmuka meja kelas siswa
6. Lengkapi Antarmuka Manajemen Kursus Guru (kode sebagai berikut)
package com.pag_1;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.TableColumn;public class KeChengGuanLiUI extends JFrame { public KeChengGuanLiUI() { intiComponent(); } private void inticomponent () {string [] columnNames = {"Jumlah kelas", "Senin", "Selasa", "Kamis", "Jumat", "Sabtu", "Minggu"}; Objek [] [] obj = objek baru [8] [8]; untuk (int i = 0; i <8; i ++) {for (int j = 0; j <8; j ++) {switch (j) {case 0: obj [0] [0] = "Pelajaran pertama"; obj [0] [1] = "kelas dengan kelas"; obj [0] [2] = ""; obj [0] [3] = ""; obj [0] [4] = "Kelas dengan kelas dengan kelas"; obj [0] [5] = ""; OBJ [0] [6] = "; obj [0] [7] =" "; break; kasus 1: obj [1] [0] =" Pelajaran Kedua "; Obj [1] [1] =" Kelas dengan kelas "; OBJ [1] [2] =" "; Obj [1] [3] =" "; OBJ [1] [4] [Kelas 1]; "; obj [1] [7] = ""; merusak; Kasus 2: OBJ [2] [0] = "Kelas dengan kelas dengan kelas"; obj [2] [1] = ""; obj [2] [2] [1] = "kelas dengan kelas"; obj [2] [4] = "; obj [2] [5] =" "; obj [2] [6] =" "; obj [2] [7] =" "; Break; kasus 3: obj [3] [0] =" Pelajaran 4 "; Obj [3] [1] =" "; OBJ [3] [2]"; OBJ [3] [3] [3] [3] [OBJ [3] [2] [2]; ""; obj [3] [6] = ""; OBJ [3] [7] = "; break; kasus 4: obj [4] [0] =" Pelajaran 5 "; obj [4] [1] =" "; obj [4] [2] =" "; obj [4] [3] ="; obj [4] [4] = ""; obj [4] [5] = ""; obj [4] [6] = ""; obj [4] [7] = ""; merusak; Kasus 5: OBJ [5] [0] = "Pelajaran 6"; obj [5] [1] = ""; obj [5] [2] = "rapat"; obj [5] [3] = ""; obj [5] [4] = ""; obj [5] [5] [5] [5] [7] = ""; merusak; Kasus 6: OBJ [6] [0] = "Pelajaran 7"; obj [6] [1] = ""; obj [6] [2] = "Ada kelas"; obj [6] [3] = ""; obj [6] [4] = "rapat"; obj [6] [5] = ""; obj [6] [6] [6] = ""; obj [6] [7] = ""; merusak; Kasus 7: OBJ [7] [0] = "Pelajaran 8"; obj [7] [1] = ""; obj [7] [2] = "Ada kelas"; obj [7] [3] = ""; obj [7] [4] = ""; obj [7] [5] = ""; obj [7] [6] = "; obj [7] [7] ="; merusak; }}} Tabel jtable = jtable baru (obj, columnNames); Kolom TableColumn = null; int kolom = Table.getColumnCount (); untuk (int i = 0; i <colunms; i ++) {column = Table.getColumnModel (). getColumn (i); kolom.setPreferredWidth (100); } table.setAuteReSizeMode (jtable.auto_resize_off); Jscrollpane scroll = jscrollpane baru (tabel); scroll.setsize (300, 50); tambahkan (gulir); this.setlocation (450, 200); this.setVisible (true); this.setDefaultCloseOperation (jframe.exit_on_close); this.pack (); } public static void main (string [] args) {new KechengguanliUi (); }}Manajemen Kurikulum Guru
7. Lengkapi halaman Daftar Siswa halaman guru (kode sebagai berikut)
package com.pag_1;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.TableColumn;public class XueShengMingDanUI extends JFrame { public XueShengMingDanUI() { intiComponent(); } // menginisialisasi bentuk komponen private void inticomponent () {// atur nama kolom dari string jtable [] columnNames = {"nomor siswa", "name", "mayor", "class"}; Objek [] [] obj = objek baru [7] [7]; untuk (int i = 0; i <7; i ++) {untuk (int j = 0; j <7; j ++) {switch (j) {case 0: obj [0] [0] = "14140301"; obj [0] [1] = "wang xiaoming"; OBJ [0] [2] = "Rekayasa Komunikasi"; obj [0] [3] = "2"; merusak; Kasus 1: OBJ [1] [0] = "14140302"; obj [1] [1] = "Wang lei"; OBJ [1] [2] = "Rekayasa Komunikasi"; obj [1] [3] = "2"; merusak; Kasus 2: OBJ [2] [0] = "14140303"; obj [2] [1] = "li fang"; OBJ [2] [2] = "Rekayasa Komunikasi"; obj [2] [3] = "2"; merusak; Kasus 3: OBJ [3] [0] = "14140304"; obj [3] [1] = "Zhang San"; OBJ [3] [2] = "Rekayasa Komunikasi"; obj [3] [3] = "2"; merusak; Kasus 4: OBJ [4] [0] = "14140305"; obj [4] [1] = "li si"; OBJ [4] [2] = "Rekayasa Komunikasi"; obj [4] [3] = "2"; merusak; Kasus 5: OBJ [5] [0] = "14140306"; obj [5] [1] = "wen yu"; OBJ [5] [2] = "Rekayasa Komunikasi"; obj [5] [3] = "2"; merusak; Kasus 6: OBJ [6] [0] = "14140307"; OBJ [6] [1] = "Wang Fei"; OBJ [6] [2] = "Rekayasa Komunikasi"; obj [6] [3] = "2"; merusak; }}} Tabel jtable = jtable baru (obj, columnNames); // Salah satu kolom TableColumnum Konstruktor Jtable = NULL; // Atur lebar default dan tinggi kolom kolom int jtable = Table.getColumnCount (); untuk (int i = 0; i <colunms; i ++) {column = Table.getColumnModel (). getColumn (i); kolom.setPreferredWidth (100); // Atur lebar default dari setiap kolom ke 100} Table.setAuteSizeMode (jtable.auto_resize_off); // Atur status daftar penyesuaian otomatis JTable, dan atur untuk mematikan jscrollpane scroll = jscrollpane baru (tabel); // Muat jtable dengan jscrollpane, sehingga kolom di luar kisaran dapat dilihat oleh scrollbars dengan scroll.setsize (300, 50); tambahkan (gulir); this.setlocation (450, 200); this.setVisible (true); this.setDefaultCloseOperation (jframe.exit_on_close); this.pack (); } public static void main (string [] args) {new xueshengmingdanui (); }}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.