Als ich durch das Internet wanderte, stellte ich fest, dass viele Menschen über das Problem der Verwendung von Java zur Implementierung des Panels nach der QQ -Anmeldung sehr beunruhigt waren. Kürzlich habe ich Projekte geschrieben, die QQ simulieren, und ich habe dieses Problem unabdingbar gestoßen. Ich ging zu Google und Baidu online. Schließlich stellte ich fest, dass viele Menschen von diesem Problem beunruhigt waren, aber keine Lösung hatten. Es sind wahrscheinlich diejenigen, die es geschrieben haben und es nicht online gepostet haben. Nachdem ich nun nach Informationen aus mehreren Aspekten gesucht habe, habe ich sie schließlich geschrieben. Es ist nicht umsonst, dass ich letzte Nacht spät aufgeblieben bin. Haha, schauen wir uns den Screenshot des Implementierungseffekts an:
Ok, das ist der Effekt. Obwohl die grundlegenden Funktionen implementiert sind, ist sie immer noch unvollkommen. Zum Beispiel kann das Freundesfeld nicht geändert werden, wenn sich das Fenster in der Größe ändert, aber es hätte gelöst werden müssen. Es wird noch nicht geübt. Lassen Sie uns den folgenden Quellcode veröffentlichen:
Insgesamt gibt es drei Kategorien:
MemberModel.java // Vorlagenklasse, in der QQ-Like-Freund-Tag-Informationen angezeigt werden;
Testpane.java // Containerklasse zu mehreren Vorlagen hinzufügen;
Testframe.java // Formklasse;
Der Kernteil ist die ersten beiden Klassen. Beachten Sie, dass die Layout -Methode der zweiten Klasse nicht leer sein kann, andernfalls kann sie keine Container -Display -Bildlaufleiste sein. Dies ist ein Problem bei der Implementierung dieser Panelfunktion, da ich nicht weiß, wie man andere Layout -Methoden verwendet. Daher verwende ich nur das leere Layout häufig. Nach dieser Zeit wurde mir klar, dass die Verwendung von leerem Layout allein nicht möglich ist und die Anwendung des leeren Layouts zu eingeschränkt ist.
Die Möglichkeit zum Hinzufügen von Freundsinformationen in testpane.java sollte die Möglichkeit sein, Informationen in den Code zu fügen. Sie können Methoden in anderen Klassen aufrufen, Parameter (Arrays) übergeben und dann die Informationsvorlage initialisieren. Die Informationsvorlage im Panel wird vom Beginn des Programms generiert, ist jedoch als unsichtbar eingestellt. Nach dem Klicken auf die entsprechende Klassifizierungsetika sind die Visualisierung und unsichtbar gleich. Das heißt, so viele Freunde, die Sie haben, werden es immer JLabels auf Ihrem Panel geben, aber Sie sehen sie vielleicht nicht. Ich bin der Meinung, dass meine Implementierungsmethode nicht sehr gut ist. In der Layout -Methode, die ich verwende, ist die Breite des Etiketts sicher. Ich weiß nicht, wie ich seine Breite und Höhe einstellen kann, daher füge ich dem Etikett ein weißes Symbol (185 x 60) hinzu, um das Etikett breiter zu machen, und füge dann die Vorlage JPanel hinzu. Wenn Internetnutzer eine gute Lösung haben, hoffe ich, dass ich Ihnen einige Ratschläge gebe.
Das Folgende ist der Quellcode:
Paket Coolbaby6; import Javax.swing.imageicon; Import Javax.swing.jpanel; Import Javax.swing.jbutton; Import Java.awt.Color; endgültige lange Serialversionuid = 1L; Public Jbutton Jbutton = NULL; // Zeigen Sie Freund Avatar; public Jpanel jpanel = new jpanel (); // Vorlagenbehälter; private jlabel lb_nickname = null; // spitzname zeigen; privates int pic; private String -Spitzname = null; Privat JLabel lb_mood = null; // Stimmung zeigen; public memberModel (int pic, String -Spitzname, int len) {Super (); this.pic = pic; // Avatar -Zusammenstellung (es gibt viele Möglichkeiten, dies zu implementieren, dies ist die einfachste) this.nickname = Spitzname; // Spitzname; initialisieren(); } private void initialize () {lb_mood = new JLabel (); lb_mood.setBounds (neues Rechteck (51, 30, 131, 20)); lb_mood.setfont (neue Schriftart ("Dialog", font.plain, 12)); lb_mood.setText ("Die weiteste Distanz der Welt ist nicht Leben und Tod, aber ich stehe vor dir und du weißt nicht, dass ich dich liebe!"); lb_mood.addmouselistener (new java.awt.event.mouseadapter () {public void mouEnered (java.awt.event.mouseeEvent e) {Exchangeenter (); mouseexited (java.awt.event.MouseEvent e) {ExchangeExited (); lb_nickname = new JLabel (); lb_nickname.setBounds (neues Rechteck (52, 10, 80, 20)); lb_nickname.setfont (neue Schriftart ("Dialog", font.bold, 14)); lb_nickname.setText (Spitzname); jpanel.setSize (neue Dimension (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.mouseeEvent e) {Börsenexited (); // Maus ziehen aus dem Vorlagenbereich und ändere die Hintergrundfarbe;} öffentlich -void mouideded (java.awt.event.mouseevent e) {{{{{{{{{{{{{{{{{{{{{{{{{{{Ava) {java.awt. Exchangeenter (); // Bewegen Sie die Maus in den Vorlagenbereich und ändern Sie die Hintergrundfarbe; } 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 (neues Rechteck (8, 10, 40, 40)); Jbutton.Setbackground (neue Farbe (236, 255, 236)); Jbutton.seticon (neues Imageicon (pic + ".jpg")); jButton.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseExited(java.awt.event.MouseEvent e) { exchangeExited();//Mouse move out of the template area and change the background color; } public void mouseEntered(java.awt.event.MouseEvent e) { Exchangeenter (); // Bewegen Sie die Maus in den Vorlagenbereich und ändern Sie die Hintergrundfarbe; } return Jbutton; }} Paket Coolbaby6; import Javax.swing.Borderfactory; import Javax.swing.jpanel; Import Javax.swing.jlabel; Import Javax.swing.boxLayout; Import Javax.swing.imageIcon; Privat JLabel Jlabel = NULL; Privat JLabel JLabel1 = NULL; Privat JLabel JLabel11 = NULL; Privat JLabel JLabel12 = NULL; private int klickf = 0; private int clickb = 0; public testpane () {super (); initialisieren(); } private void initialize () {jLabel12 = new JLabel (); JLabel12.Seticon (neues Imageicon ("img/bg.jpg"); JLabel12.Add (neuer Mitgliedsmodel (3, "Coolbaby3", 200) .jpanel); JLabel12.SetBorder (BorderFactory.CreateEemptyBorder (2, 2, 2, 2)); JLabel11 = new JLabel (); JLabel11.seticon (neues Imageicon ("img/bg.jpg"); JLabel11.add (neuer Mitgliedsmodel (2, "Coolbaby2", 200) .Jpanel); JLabel11.SetBorder (BorderFactory.CreateEemptyBorder (2, 2, 2, 2)); JLabel1 = new JLabel (); JLabel1.Seticon (neues Imageicon ("img/bg.jpg"); JLabel1.Add (New MemberModel (1, "Coolbaby1", 200) .Jpanel); JLabel1.SetBorder (BorderFactory.CreateEemptyBorder (2, 2, 2, 2)); JLabel = new JLabel (); Jlabel.setText ("mein Freund"); JLabel.seticon (neues Imageicon ("img/ico.jpg"); JLabel.SetBorder (BorderFactory.CreateEemptyBorder (2, 2, 2, 2)); jlabel.addmouselistener (new java.awt.event.mouseadapter () {public void mouseclicked (java.awt.event.mouseeEvent e) {clickF+= 1; if (clickF%2 == 1) {jlabel1.setvisible (false); JLabel12.setvisible (Falsch); aktualisieren(); } } }); this.setLayout (neuer BoxLayout (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 () {// Die UI -Schnittstelle aktualisieren; this.updateui (); } private void clickBlack2 (jLabel [] jb) {// klicken Sie auf die Tags und setzen Sie alle folgenden Tags, um unsichtbar zu sein; für (int i = 1; i <jb.length; i ++) {try {jb [i] .setVisible (false); } catch (Ausnahme e) {e.printstacktrace (); } } aktualisieren(); } private void clickBlack (jLabel [] jb) {// klicken Sie auf die Tags und setzen Sie alle folgenden Tags, um sie sichtbar zu sein. für (int i = 1; i <jb.length; i ++) {try {jb [i] .setVisible (true); } catch (Ausnahme e) {e.printstacktrace (); } } aktualisieren(); } private void addjlabel () {// Blacklist -Inhalt hinzufügen; Finale JLabel [] JB = New JLabel [7]; JB [0] = new JLabel (); JB [0] .setText ("Blacklist"); JB [0] .Seticon (New Imageicon ("IMG/ICO2.JPG"); JB [0] .SetBorder (BorderFactory.CreateEemptyBorder (2, 2, 2, 2)); JB [0] .Addmouselistener (New Java.awt.event.Mouseadapter () {public void mouseclicked (java.awt.event.mouseeEvent e) {clickb+= 1; if (clickb%2 == 1) {clickblack (jb); jb [0]. } else {clickBlack2 (JB); this.add (JB [0], NULL); für (int i = 1; i <jb.length; i ++) {jb [i] = new JLabel (); JB [i] .Seticon (neues Imageicon ("img/bg.jpg"); JB [i] .SetBorder (BorderFactory.CreateEemptyBorder (2, 2, 2, 2)); JB [i] .Add (neuer Mitgliedsmodel ((i+3), "Coolbaby"+(i+3), 200) .jpanel); JB [i] .setvisible (falsch); this.add (jb [i], null); }}} Paket Coolbaby6; import Java.awt.BorderLayout; import Javax.swing.jframe; import Javax.swing.jpanel; Import Javax.swing.jscrollpane; Import Javax.swing.scrollpaneconstants; Privat Jpanel JContentPane = NULL; private jScrollpane scrollpane = null; public static void main (String [] args) {SwingUtilities.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 ("Simulieren, um QQ -Panelfunktionen zu implementieren"); Jframe.SetContentPane (getJContentPane ()); } return Jframe; } private jScrollPane GetCrollPane () {// Scrollbar zum Container -JPanel hinzufügen, der Freunde hinzufügt; if (scrollpane == null) {scrollpane = new JscrollPane (new Testpane ()); //Scrollpane.setBounds(20,5, -1, 600); scrollpane.sethorizontalscrollbarpolicy (ScrollPaneConstants.Horizontal_ScrollBar_Never); // keine horizontalen Scrollbars anzeigen; } return scrollpane; } private jpanel getJContentPane () {// Instantativ des zugrunde liegenden Containers jpanel; if (jContentPane == null) {jContentPane = new jpanel (); JContentPane.SetLayout (New BorderLayout ()); JContentPane.Add (getCrollpane (), BorderLayout.Center); } return JContentPane; }} Eine Strategie, um meinen Quellcode erfolgreich zu kompilieren:
①. Erstellen Sie ein Projekt, erstellen Sie 3 Kategorien gemäß meinem Klassennamen und kopieren Sie den Quellcode in.
②. Erstellen Sie einen Ordner namens IMG im Stammverzeichnis des Projekts und geben Sie die Bilder ein. (Die zugehörigen Bilder werden nicht mehr hochgeladen. Finden Sie einfach ein paar Bilder zum Testen)
③, kompilieren und implementieren;
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.