Ketika saya berkeliaran di internet, saya menemukan bahwa banyak orang sangat bermasalah dengan masalah menggunakan Java untuk mengimplementasikan panel setelah login QQ. Baru -baru ini, saya menulis proyek yang mensimulasikan QQ, jadi saya mengalami masalah ini sangat diperlukan. Saya pergi ke google dan baidu online. Akhirnya, saya menemukan bahwa banyak orang bermasalah dengan masalah ini tetapi tidak memiliki solusi. Mungkin mereka yang menulisnya dan tidak mempostingnya secara online. Sekarang, setelah mencari informasi dari berbagai aspek, saya akhirnya menulisnya. Tidak sia -sia bahwa saya begadang larut malam. Haha, mari kita lihat tangkapan layar efek implementasi:
Oke, inilah efeknya. Meskipun fungsi dasar diimplementasikan, itu masih tidak sempurna. Misalnya, panel teman tidak dapat diubah karena jendela berubah dalam ukuran, tetapi seharusnya sudah terpecahkan. Itu belum dipraktikkan. Mari kirim kode sumber di bawah ini:
Ada tiga kategori secara total:
Kelas Templat MemberModel.java // yang menampilkan informasi tag teman seperti QQ;
Testpane.java // Tambahkan kelas kontainer ke beberapa templat;
TestFrame.java // kelas bentuk;
Bagian inti adalah dua kelas pertama. Perhatikan bahwa metode tata letak dari kelas kedua tidak dapat kosong, jika tidak, itu tidak bisa menjadi bilah gulir tampilan kontainer. Ini adalah masalah dalam mengimplementasikan fungsi panel ini, karena saya tidak tahu cara menggunakan metode tata letak lainnya, jadi saya hanya sering menggunakan tata letak kosong. Setelah waktu ini, saya menyadari bahwa menggunakan tata letak kosong saja tidak dimungkinkan, dan penerapan tata letak kosong terlalu terbatas.
Cara untuk menambahkan informasi teman di testpane.java harus menjadi cara untuk menambahkan informasi daftar hitam dalam kode. Anda dapat memanggil metode di kelas lain, lulus parameter (array), dan kemudian menginisialisasi templat informasi. Template informasi pada panel dihasilkan dari awal program, tetapi diatur agar tidak terlihat. Setelah mengklik label klasifikasi yang relevan, visualisasi dan tidak terlihat adalah sama. Dengan kata lain, karena banyak teman yang Anda miliki, akan selalu ada jlabel di panel Anda, tetapi Anda mungkin tidak melihatnya. Saya merasa bahwa metode implementasi saya tidak terlalu bagus. Dalam metode tata letak yang saya gunakan, lebar label pasti. Saya tidak tahu cara mengatur lebarnya, jadi saya menambahkan ikon putih (185 x 60) ke label untuk membuat label lebih lebar, dan kemudian menambahkan template jpanel. Jika netizen memiliki solusi yang baik, saya harap saya akan memberi Anda beberapa saran.
Berikut ini adalah kode sumber:
Paket coolbaby6; impor javax.swing.imageicon; impor javax.swing.jpanel; impor javax.swing.jbutton; impor java.awt.color; impor java.awt.rectangle; impor javax.swing.jlabel; impor java.awt.awtangle; SerialVersionuid panjang = 1L; publik jbutton jbutton = null; // tunjukkan teman avatar; jpanel jpanel publik = jpanel baru (); // wadah template; Private Jlabel lb_nickname = null; // Tampilkan nama panggilan; pic pribadi int; Private String Nickname = null; Private Jlabel LB_MOOD = null; // Tampilkan suasana hati; Public MemberModel (int pic, string nickname, int len) {super (); this.pic = pic; // kompilasi avatar (ada banyak cara untuk diimplementasikan, ini yang paling sederhana) this.nickname = julukan; // nama panggilan; inisialisasi (); } private void initialize () {lb_mood = new jlabel (); lb_mood.setbounds (persegi panjang baru (51, 30, 131, 20)); lb_mood.setfont (font baru ("dialog", font.plain, 12)); lb_mood.setText ("Jarak terjauh di dunia bukanlah hidup dan mati, tapi saya berdiri di depan Anda dan Anda tidak tahu bahwa saya mencintaimu!"); lb_mood.addmouseListener (java.awt.event.mouseadapter () {public void mouseentered (java.awt.event.mouseEvent e) {ExchangeEnter (); lb_mood. e) {ExchangeExited (); lb_nickname = new jlabel (); lb_nickname.setbounds (persegi panjang baru (52, 10, 80, 20)); lb_nickname.setfont (font baru ("dialog", font.bold, 14)); lb_nickname.settext (nama panggilan); jpanel.setsize (dimensi baru (185, 60)); jpanel.setlayout (null); jpanel.add (getjbutton (), null); jpanel.add (lb_nickname, null); jpanel.add (lb_mood, null); jpanel.addmouseListener (java.awt.event.mouseadapter baru () {public void mouseExited (java.awt.event.mouseEvent e) {exchangeexited (); // mouse keluar dari area templat dan mengubah warna latar belakang;} public void mouseRed mouseered. Exchangeenter (); // pindahkan mouse ke area template dan ubah warna latar belakang; } private void ExchangeEnter () {jpanel.setBackground (warna baru (192.224.248))); } private void ExchangeExited () {jpanel.setBackground (null); } private jbutton getjbutton () {if (jbutton == null) {jbutton = new jbutton (); jbutton.setbounds (persegi panjang baru (8, 10, 40, 40)); jbutton.setBackground (warna baru (236, 255, 236)); jbutton.seticon (gambar baru (pic + ".jpg")); jbutton.addmouseListener (java.awt.event.mouseadapter () {public void mouseexited (java.awt.event.mouseEvent e) {exchangeExited () {{{{{{{{{{{{{{{{{{{{{{{{{oVE yang tidak mouse. Exchangeenter (); // pindahkan mouse ke area template dan ubah warna latar belakang; } return jbutton; }} Paket coolbaby6; import javax.swing.borderfactory; impor javax.swing.jpanel; import javax.swing.jlabel; import javax.swing.boxlayout; import javax.swing.imageicon; testpane kelas publik memperluas jPanel {private static long version final longversion final final long long version = Public Classpane Extends JPanel {private static static long version = public class publice; Private Jlabel Jlabel = null; private jlabel jlabel1 = null; Private Jlabel Jlabel11 = null; Private Jlabel Jlabel12 = null; private int clickf = 0; private int clickb = 0; testpane publik () {super (); inisialisasi (); } private void initialize () {jlabel12 = new jlabel (); jlabel12.seticon (gambar baru ("img/bg.jpg")); jlabel12.Add (Membermodel baru (3, "coolbaby3", 200) .jpanel); jlabel12.setborder (borderfactory.createemptyborder (2, 2, 2, 2)); jlabel11 = new jlabel (); jlabel11.seticon (gambar baru ("img/bg.jpg")); jlabel11.add (Membermodel baru (2, "coolbaby2", 200) .jpanel); jlabel11.setborder (borderfactory.createemptyborder (2, 2, 2, 2)); jlabel1 = new jlabel (); jlabel1.seticon (gambar baru ("img/bg.jpg")); jlabel1.add (Membermodel baru (1, "coolbaby1", 200) .jpanel); jlabel1.setborder (borderfactory.createemptyborder (2, 2, 2, 2)); jlabel = new jlabel (); jlabel.setText ("temanku"); jlabel.seticon (gambar baru ("img/ico.jpg")); jlabel.setborder (borderfactory.createemptyborder (2, 2, 2, 2)); jlabel.addmouseListener (baru java.awt.event.mouseadapter () {public void mouseclicked (java.awt.event.mouseEvent e) {clickf+= 1; if (clickf%2 == 1) {jlabel1.setvisible (false); jlabel12.setvisible (false); ImageIcon ("IMG/ICO.JPG"); this.setLayout (boxlayout baru (this, boxlayout.y_axis)); this.setsize (200, 408); this.setlocation (20, 5); this.add (jlabel, null); this.add (jlabel1, null); this.add (jlabel11, null); this.add (jlabel12, null); addJlabel (); } private void update () {// Perbarui antarmuka UI; this.updateUi (); } private void clickblack2 (jlabel [] jb) {// klik tag dan atur semua tag berikut agar tidak terlihat; untuk (int i = 1; i <jb.length; i ++) {coba {jb [i] .setVisible (false); } catch (Exception e) {E.PrintStackTrace (); } } memperbarui(); } private void clickblack (jlabel [] jb) {// klik tag dan atur semua tag berikut agar terlihat; untuk (int i = 1; i <jb.length; i ++) {coba {jb [i] .setVisible (true); } catch (Exception e) {E.PrintStackTrace (); } } memperbarui(); } private void addJlabel () {// Tambahkan konten BlackList; final jlabel [] jb = jlabel baru [7]; JB [0] = JLabel baru (); JB [0] .setText ("BlackList"); jb [0] .seticon (gambar baru ("img/ico2.jpg")); jb [0] .setBorder (borderfactory.createemptyborder (2, 2, 2, 2)); jb [0] .addmouseListener (java.awt.event.mouseAdapter () {public void mouseclicked (java.awt.event.mouseEvent e) {clickb+1; ifon (clickB%2 == 1) {clickblack (jb); } else {clickblack2 (jb); this.add (jb [0], null); untuk (int i = 1; i <jb.length; i ++) {jb [i] = new jlabel (); jb [i] .seticon (gambar baru ("img/bg.jpg")); jb [i] .setBorder (borderfactory.createemptyborder (2, 2, 2, 2)); jb [i] .add (anggota baruModel ((i+3), "coolbaby"+(i+3), 200) .jpanel); jb [i] .setVisible (false); this.add (jb [i], null); }}} Paket coolbaby6; impor java.awt.borderlayout; import javax.swing.jframe; import javax.swing.jpanel; impor javax.swing.jscrollpane; impor javax.swing.scrollpaneconstants; javax. Private Jpanel jcontentpane = null; scrollpane jscrollpane pribadi = null; public static void main (string [] args) {swingutilities.invokelater (runnable baru () {public void run () {testframe application = new testframe (); application.getjframe (). setVisible (true);}}); } private jframe getjframe () {if (jframe == null) {jframe = new jframe (); jframe.setDefaultCloseOperation (jframe.exit_on_close); jframe.setsize (230, 700); jframe.settitle ("Simulasi untuk mengimplementasikan fungsi panel QQ"); jframe.setContentPane (getjcontentpane ()); } return jframe; } private jscrollpane getscrollpane () {// Tambahkan scrollbar ke wadah jpanel yang menambahkan teman; if (scrollpane == null) {scrollpane = new jscrollpane (testpane baru ()); //scrollpane.setbounds(20,5, -1, 600); scrollpane.sethorizontalScrollBarpolicy (scrollpaneconstants.horizontal_scrollbar_never); // Jangan menampilkan scrollbar horizontal; } return scrollpane; } private jpanel getjcontentpane () {// instantiate container jpanel yang mendasarinya; if (jcontentpane == null) {jcontentpane = jpanel baru (); jcontentpane.setLayout (borderlayout baru ()); jcontentpane.add (getscrollpane (), borderlayout.center); } return JContentPane; }} Strategi untuk berhasil menyusun kode sumber saya:
①. Membangun proyek, membangun 3 kategori sesuai dengan nama kelas saya, dan menyalin kode sumber di;
②. Buat folder yang disebut IMG di direktori root proyek dan letakkan gambar untuk digunakan di dalamnya. (Gambar terkait tidak lagi diunggah, cukup temukan beberapa gambar untuk diuji)
③, kompilasi dan implementasikan;
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.