عندما كنت أتجول حول الإنترنت ، وجدت أن الكثير من الأشخاص كانوا منزعجين للغاية من مشكلة استخدام Java لتنفيذ اللوحة بعد تسجيل الدخول إلى QQ. في الآونة الأخيرة ، كنت أكتب مشاريع تحاكي QQ ، لذلك واجهت هذه المشكلة لا غنى عنها. ذهبت إلى Google و Baidu Online. أخيرًا ، وجدت أن الكثير من الناس كانوا منزعجين من هذه المشكلة ولكن ليس لديهم حل. ربما يكون أولئك الذين كتبوها ولم ينشروه عبر الإنترنت. الآن ، بعد البحث عن معلومات من جوانب متعددة ، كتبت أخيرًا. ليس من العبث أنني بقيت مستيقظًا في وقت متأخر من الليلة الماضية. هاها ، دعنا نلقي نظرة على لقطة شاشة تأثير التنفيذ:
حسنًا ، هذا هو التأثير. على الرغم من تنفيذ الوظائف الأساسية ، إلا أنها لا تزال غير كاملة. على سبيل المثال ، لا يمكن تغيير لوحة الأصدقاء مع تغير النافذة في الحجم ، ولكن كان ينبغي حلها. لم يمارس بعد. دعنا ننشر رمز المصدر أدناه:
هناك ثلاث فئات في المجموع:
MemberModel.java // class template التي تعرض معلومات علامة صديق تشبه QQ ؛
testpane.java // إضافة فئة الحاوية إلى قوالب متعددة ؛
testframe.java // فئة النموذج ؛
الجزء الأساسي هو أول فئتين. لاحظ أن طريقة التخطيط للفئة الثانية لا يمكن أن تكون فارغة ، وإلا فإنه لا يمكن أن يكون شريط تمرير عرض حاوية. هذه مشكلة في تنفيذ وظيفة اللوحة هذه ، لأنني لا أعرف كيفية استخدام أساليب التخطيط الأخرى ، لذلك لا أستخدم التخطيط الفارغ بشكل متكرر فقط. بعد هذا الوقت ، أدركت أن استخدام التصميم الفارغ وحده أمر غير ممكن ، وأن تطبيق التصميم الفارغ مقيد للغاية.
يجب أن تكون طريقة إضافة معلومات صديق في Testpane.java هي الطريقة لإضافة معلومات القائمة السوداء في الرمز. يمكنك استدعاء طرق في فئات أخرى ، وتمرير المعلمات (المصفوفات) ، ثم تهيئة قالب المعلومات. يتم إنشاء قالب المعلومات على اللوحة من بداية البرنامج ، ولكن من المقرر أن يكون غير مرئي. بعد النقر فوق ملصق التصنيف ذي الصلة ، فإن التصور وغير المرئي هو نفسه. وهذا يعني ، مثل العديد من الأصدقاء لديك ، سيكون هناك دائمًا Jlabels على اللوحة الخاصة بك ، لكن قد لا تراهم. أشعر أن طريقة التنفيذ الخاصة بي ليست جيدة جدًا. في طريقة التصميم التي أستخدمها ، يكون عرض الملصق مؤكدًا. لا أعرف كيفية ضبط عرضه وطوله ، لذلك أقوم بإضافة أيقونة بيضاء (185 × 60) إلى الملصق لجعل الملصق أوسع ، ثم إضافة القالب jpanel. إذا كان لدى مستخدمي الإنترنت حل جيد ، آمل أن أقدم لكم بعض النصائح.
فيما يلي رمز المصدر:
package coolbaby6 ؛ import javax.swing.imageicon ؛ import javax.swing.jpanel ؛ import javax.swing.jbutton ؛ import java.awt.color ؛ import java.awt.awt.Rectangle ؛ import javax.swing.jlabel ؛ SerialVersionuid طويل = 1L ؛ العام jbutton jbutton = null ؛ // show friend avatar ؛ العام jpanel jpanel = new jpanel () ؛ // template container ؛ Private Jlabel lb_nickname = null ؛ // عرض لقب ؛ Private Int Pic ؛ لقب السلسلة الخاصة = فارغة ؛ Private Jlabel lb_mood = null ؛ // show Mood ؛ الأعضاء العامة (int pic ، لقب السلسلة ، int len) {super () ؛ this.pic = pic ؛ // Avatar Compilation (هناك العديد من الطرق للتنفيذ ، وهذا هو أبسط) this.nickname = lamname ؛ // lamname ؛ تهيئة () ؛ } private void initialize () {lb_mood = new jlabel () ؛ lb_mood.setBounds (مستطيل جديد (51 ، 30 ، 131 ، 20)) ؛ lb_mood.setfont (خط جديد ("مربع الحوار" ، font.plain ، 12)) ؛ lb_mood.settext ("أبعد مسافة في العالم ليست الحياة والموت ، لكنني أقف أمامك ولا تعرف أنني أحبك!") ؛ lb_mood.addmouselistener (new java.awt.event.mouseadapter () {public void mouseentered (java.awt.event.mouseevent e) mouseexited (java.awt.event.mousevent e) {ExchangeExited () ؛ lb_nickname = new Jlabel () ؛ lb_nickname.setBounds (مستطيل جديد (52 ، 10 ، 80 ، 20)) ؛ lb_nickname.setfont (خط جديد ("مربع الحوار" ، font.bold ، 14)) ؛ lb_nickname.settext (لقب) ؛ jpanel.setsize (البعد الجديد (185 ، 60)) ؛ jpanel.setlayout (null) ؛ jpanel.add (getjbutton () ، null) ؛ jpanel.add (lb_nickname ، null) ؛ jpanel.add (lb_mood ، null) ؛ jpanel.addmouselistener (new java.awt.event.mouseadapter () {public void mouseexited (java.awt.event.mouseevent e) {Exchangexited () Exchangeenter () ؛ // نقل الماوس إلى منطقة القالب وتغيير لون الخلفية ؛ } private void Exchangeenter () {jpanel.setbackground (New Color (192،224،248)) ؛ } private void ExchangeExited () {jpanel.setbackground (null) ؛ } private jbutton getjbutton () {if (jbutton == null) {jbutton = new jbutton () ؛ jbutton.setBounds (مستطيل جديد (8 ، 10 ، 40 ، 40)) ؛ Jbutton.Setbackground (New Color (236 ، 255 ، 236)) ؛ jbutton.seticon (new imageicon (pic + ".jpg")) ؛ jbutton.addmouselistener (new java.awt.event.mouseadapter () {public void mouseexited (java.awt.event.mouseevent e) {Exchangexited () Exchangeenter () ؛ // نقل الماوس إلى منطقة القالب وتغيير لون الخلفية ؛ } إرجاع jbutton ؛ }} package coolbaby6 ؛ import javax.swing.borderfactory ؛ import javax.swing.jpanel ؛ import javax.swing.jlabel ؛ import javax.swing.boxlayout ؛ import javax.swing.imageicon ؛ public class testpane يمتد jpanel {private private static serialivinguid = 1l ؛ الخاص Jlabel Jlabel = null ؛ الخاص jlabel jlabel1 = null ؛ الخاص Jlabel Jlabel11 = null ؛ الخاص Jlabel Jlabel12 = null ؛ private int clickf = 0 ؛ private int clickb = 0 ؛ testpane العامة () {super () ؛ تهيئة () ؛ } private void initialize () {jlabel12 = new jlabel () ؛ JLabel12.Seticon (صورة جديدة ("IMG/BG.JPG")) ؛ JLabel12.Add (New MemberModel (3 ، "Coolbaby3" ، 200) .jpanel) ؛ JLabel12.SetBorder (BorderFactory.CreateMemptyBorder (2 ، 2 ، 2 ، 2)) ؛ JLabel11 = New JLabel () ؛ jlabel11 JLabel11.Add (New MemberModel (2 ، "Coolbaby2" ، 200) .jpanel) ؛ jlabel11 JLabel1 = New JLabel () ؛ JLabel1.Seticon (New ImageIcon ("IMG/BG.JPG")) ؛ JLabel1.Add (New MemberModel (1 ، "Coolbaby1" ، 200) .jpanel) ؛ JLabel1.SetBorder (BorderFactory.CreateMemptyBorder (2 ، 2 ، 2 ، 2)) ؛ JLabel = New JLabel () ؛ Jlabel.settext ("صديقي") ؛ jlabel.seticon (New ImageIcon ("IMG/ICO.JPG")) ؛ jlabel.setborder (borderfactory.createMembtyBorder (2 ، 2 ، 2 ، 2)) ؛ jlabel.addmouselistener (new java.awt.event.mouseadapter () {public void mouseclicked (java.awt.event.mouseevent e) {clickf+= 1 ؛ if (clickf ٪ 2 == 1) {jlabel1.setvisible (false) ؛ Jlabel12.Stible (false) ؛ ImageIcon ("IMG/ICO.JPG") ؛ this.setLayout (new boxLayout (هذا ، 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 () {// تحديث واجهة واجهة المستخدم ؛ this.updateui () ؛ } private void clickblack2 (jlabel [] jb) {// انقر فوق العلامات وقم بتعيين جميع العلامات التالية لتكون غير مرئية ؛ لـ (int i = 1 ؛ i <jb.length ؛ i ++) {try {jb [i] .SetVisible (false) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } } تحديث()؛ } private void clickblack (jlabel [] jb) {// انقر فوق العلامات وقم بتعيين جميع العلامات التالية لتكون مرئية ؛ لـ (int i = 1 ؛ i <jb.length ؛ i ++) {try {jb [i] .setVisible (true) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } } تحديث()؛ } private void addjlabel () {// إضافة محتوى القائمة السوداء ؛ النهائي jlabel [] jb = new Jlabel [7] ؛ JB [0] = New JLabel () ؛ JB [0] .Settext ("القائمة السوداء") ؛ JB [0] .Seticon (صورة جديدة ("IMG/ICO2.JPG")) ؛ JB [0] .SetBorder (BorderFactory.CreateMembtyBorder (2 ، 2 ، 2 ، 2)) ؛ jb [0] .addmouselistener (new java.awt.event.mouseadapter () {public void mouseclicked (java.awt.event.mouseevent e) {clickb+= 1 ؛ if (clickb ٪ 2 == 1) {jb) ؛ jb [0] } {clickblack2 (jb) ؛ this.add (jb [0] ، null) ؛ لـ (int i = 1 ؛ i <jb.length ؛ i ++) {jb [i] = new jlabel () ؛ jb [i] .seticon (صورة جديدة ("img/bg.jpg")) ؛ JB [i] .SetBorder (BorderFactory.CreateMembtyBorder (2 ، 2 ، 2 ، 2)) ؛ JB [i] .add (New MemberModel ((i+3) ، "Coolbaby"+(i+3) ، 200) .jpanel) ؛ JB [i] .SetVisible (false) ؛ this.add (jb [i] ، null) ؛ }}} Package CoolBaby6 ؛ import java.awt.borderlayout ؛ import javax.swing.jframe ؛ import javax.swing.jpanel ؛ import javax.swing.jscrollpane ؛ import javax.swing.scrollpaneConstants ؛ import javax.swing.swinguteribility ؛ الخاص jpanel jContentPane = فارغ ؛ خاص jscrollpane scrollpane = null ؛ public static void main (string [] args) {swingutability.invokelater (new RunNable () {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 ("محاكاة لتنفيذ وظائف لوحة QQ") ؛ jframe.setContentPane (getJcontentPane ()) ؛ } إرجاع JFrame ؛ } private jscrollpane getScrollPane () {// إضافة شريط التمرير إلى الحاوية jpanel التي تضيف الأصدقاء ؛ if (scrollpane == null) {scrollpane = new jscrollpane (new testpane ()) ؛ //scrollpane.setBounds(20،5 ، -1 ، 600) ؛ scrollpane.Sethorizontalscrollbarpolicy (scrollpaneconstants.horizontal_scrollbar_never) ؛ // لا تعرض شريط التمرير الأفقي ؛ } إرجاع scrollpane ؛ } private jpanel getjcontentpane () {// instantiate الحاوية الأساسية jpanel ؛ if (jContentPane == null) {jContentPane = new jpanel () ؛ jContentPane.setLayout (New BorderLayout ()) ؛ jContentPane.add (getScrollPane () ، borderlayout.center) ؛ } إرجاع jContentPane ؛ }} استراتيجية لتجميع رمز المصدر بنجاح:
①. قم بإنشاء مشروع ، وبناء 3 فئات وفقًا لاسم الفصل ، ونسخ رمز المصدر في ؛
②. قم بإنشاء مجلد يسمى IMG في الدليل الجذر للمشروع ووضع الصور لاستخدامها فيه. (لم تعد الصور ذات الصلة يتم تحميلها ، فقط ابحث عن بعض الصور للاختبار)
③ ، تجميع وتنفيذ ؛
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.