Когда я бродил по Интернету, я обнаружил, что многие люди были очень обеспокоены проблемой использования Java для реализации панели после входа в QQ. Недавно я писал проекты, которые имитировали QQ, поэтому я столкнулся с этой проблемой незаменимой. Я пошел в Google и Baidu Online. Наконец, я обнаружил, что многие люди были обеспокоены этой проблемой, но не имели решения. Вероятно, это те, кто написал это и не публиковал его в Интернете. Теперь, после поиска информации из нескольких аспектов, я наконец выписал ее. Это не тщетно, что я ложился спать поздно вечером. Ха -ха, давайте посмотрим на скриншот эффекта реализации:
Хорошо, это эффект. Хотя основные функции реализованы, это все еще несовершенно. Например, панель Friend не может быть изменена по мере изменения размера окна, но она должна была быть решена. Это еще не практикуется. Давайте опубликуем исходный код ниже:
Всего есть три категории:
Membermodel.java // класс шаблонов, который отображает информацию о QQ-подобном теге друга;
Testpane.java // Добавить класс контейнеров в несколько шаблонов;
Testframe.java // form class;
Основная часть - первые два класса. Обратите внимание, что метод макета второго класса не может быть пустым, иначе это не может быть полосой прокрутки дисплея контейнера. Это проблема в реализации этой функции панели, потому что я не знаю, как использовать другие методы макета, поэтому я часто использую пустую макет. После этого времени я понял, что использование пустого макета невозможно, а применение пустого макета слишком ограничено.
Способ добавления информации друга в TestPane.java должен быть способом добавления информации о черном списке в код. Вы можете позвонить в методы в других классах, пройти параметры (массивы), а затем инициализировать информационный шаблон. Информационный шаблон на панели генерируется с начала программы, но он настроен на невидим. После нажатия соответствующей классификационной этикетки визуализация и невидимые одинаковы. То есть, столько у вас друзей, на вашей панели всегда будет Jlabels, но вы можете их не увидеть. Я чувствую, что мой метод реализации не очень хороший. В методе макета, который я использую, ширина метки определена. Я не знаю, как установить его ширину и высоту, поэтому я добавляю белый значок (185 x 60) на этикетку, чтобы сделать этикетку шире, а затем добавляю шаблон JPanel. Если у пользователей есть хорошее решение, я надеюсь, что дам вам несколько советов.
Ниже приведен исходный код:
Package CoolBaby6; Import javax.swing.imageicon; импорт javax.swing.jpanel; импорт javax.swing.jbutton; import java.awt.color; импорт java.awt.rectangle; import javax.swing.jlabel; import java.awt.diMension; import javat.font. Long SerialVersionUid = 1L; public jbutton jbutton = null; // Показать друг Аватар; public jpanel jpanel = new jpanel (); // шаблонный контейнер; private jlabel lb_nickname = null; // Показать прозвище; Частный INT PIC; Private String Nickname = null; Частный jlabel lb_mood = null; // показать настроение; public membermodel (int pic, никнам String, int len) {super (); this.pic = pic; // Компиляция Avatar (есть много способов реализации, это самое простое) this.nickname = никнам; // никман; инициализировать (); } private void инициализировать () {lb_mood = new jlabel (); lb_mood.setbounds (новый прямоугольник (51, 30, 131, 20)); lb_mood.setfont (новый шрифт ("Dialog", font.plain, 12)); lb_mood.settext («Самое дальнее расстояние в мире - это не жизнь и смерть, но я стою перед вами, и вы не знаете, что я люблю вас!»); lb_mood.addmouseListener (new java.awt.event.mouseadapter () {public void mouseEnted (java.awt.event.mouseevent e) {ExchangeEnter (); lb_mood.settooltiptext (lb_mood.getText ());} public void mouseexited (lb_mood.getText ()); {ExchangeExited (); lb_nickname = new jlabel (); lb_nickname.setbounds (новый прямоугольник (52, 10, 80, 20)); lb_nickname.setfont (новый шрифт ("Dialog", 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) {ExchangeExited (); // Мыши выходят из области шаблона и изменяют цвет фона; ExchangeEnter (); // Переместить мышь в область шаблона и изменить цвет фона;}}); } private void Exchangeenter () {jPanel.setbackground (новый цвет (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 (новый цвет (236, 255, 236)); jbutton.seticon (новый Imageicon (pic + ".jpg")); jbutton.addmouseListener (new java.awt.event.mouseadapter () {public void mouseexited (java.awt.event.mouseevent e) {ExchangeExited (); // Мыши выходят из области шаблона и изменяют цвет фонового; ExchangeEnter (); // Переместить мышь в область шаблона и изменить цвет фона;}}); } вернуть Jbutton; }} Package CoolBaby6; Import javax.swing.borderFactory; импорт javax.swing.jpanel; импорт javax.swing.jlabel; import javax.swing.boxlayout; импорт javax.swing.imageicon; Public Class Testpane расширяет JPanel {Private Static Long Serialversionuid = 1L; Частный jlabel jlabel = null; Частный jlabel jlabel1 = null; Частный jlabel jlabel11 = null; Частный jlabel jlabel12 = null; private int clickf = 0; private int clickb = 0; public TestPane () {super (); инициализировать (); } private void инициализировать () {jlabel12 = new jlabel (); jlabel12.seticon (new Imageicon ("img/bg.jpg")); jlabel12.add (новый Membermodel (3, "Coolbaby3", 200) .jpanel); jlabel12.setborder (borderfactory.createemptyborder (2, 2, 2, 2)); jlabel11 = new jlabel (); jlabel11.seticon (new imageicon ("img/bg.jpg")); jlabel11.add (new MemberModel (2, "coolbaby2", 200) .jpanel); jlabel11.setborder (borderfactory.createemptyborder (2, 2, 2, 2)); jlabel1 = new jlabel (); jlabel1.seticon (new Imageicon ("img/bg.jpg")); jlabel1.add (new membermodel (1, "coolbaby1", 200) .jpanel); jlabel1.setborder (borderfactory.createemptyborder (2, 2, 2, 2)); jlabel = new jlabel (); jlabel.settext («Мой друг»); jlabel.seticon (new imageicon ("img/ico.jpg")); jlabel.setborder (borderfactory.createemptyborder (2, 2, 2, 2)); jlabel.addmouseelistener (new java.awt.event.mouseadapter () {public void mouseclicked (java.awt.event.mouseevent e) {clickf+= 1; if (clickf%2 == 1) {jlabel1.setVisible (false); jlabel11.sebil1.setsible); jlabel12.setvisible (false); ImageICon ("IMG/ICO.JPG")); this.setlayout (new Boxlayout (this, boxlayout.y_axis)); это. Setize (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 () {// Обновление интерфейса пользовательского интерфейса; this.updateui (); } private void clickblack2 (jlabel [] jb) {// Нажмите на теги и установите все следующие теги, чтобы быть невидимыми; for (int i = 1; i <jb.length; i ++) {try {jb [i] .setvisible (false); } catch (Exception e) {e.printstackTrace (); } } обновлять(); } private void clickblack (jlabel [] jb) {// Нажмите на теги и установите все следующие теги, чтобы быть видимыми; for (int i = 1; i <jb.length; i ++) {try {jb [i] .setvisible (true); } catch (Exception e) {e.printstackTrace (); } } обновлять(); } private void addJlabel () {// Добавить контент черного списка; окончательный jlabel [] jb = new jlabel [7]; jb [0] = new jlabel (); jb [0] .settext ("черный список"); jb [0] .seticon (new imageicon ("img/ico2.jpg")); jb [0] .setborder (borderfactory.createemptyborder (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) {clickblack (jb); jb [0]. } else {clickblack2 (jb); this.add (jb [0], null); for (int i = 1; i <jb.length; i ++) {jb [i] = new jlabel (); jb [i] .seticon (new imageicon ("img/bg.jpg")); jb [i] .setborder (borderfactory.createemptyborder (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; импорт javax.swing.jframe; импорт javax.swing.jpanel; import javax.swing.jscrollpane; импортировать javax.swing.scrollpaneconstants; импорт javax.swingtelities; Частный JPanel JcontentPane = null; Частный 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 («Симулировать для реализации функций панели 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 () {// создание базового контейнера JPanel; if (jcontentpane == null) {jcontentpane = new jpanel (); jcontentpane.setlayout (new Borderlayout ()); jcontentpane.add (getscrollpane (), borderlayout.center); } return jcontentPane; }} Стратегия для успешного составления моего исходного кода:
①. Создайте проект, создайте 3 категории в соответствии с моим именем класса и скопируйте исходный код в;
②. Создайте папку, называемую IMG, в корневом каталоге проекта и поместите в него изображения. (Связанные картинки больше не загружаются, просто найдите несколько картинок для тестирования)
③, компиляция и реализация;
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.