国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - QQ好友列表樹形列表java代碼實現代碼

QQ好友列表樹形列表java代碼實現代碼

2020-06-08 12:07ycb1689 JAVA教程

這篇文章主要為大家詳細介紹了QQ好友列表樹形列表簡單實現方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

以前在網上瞎轉悠的時候就發現很多人為用Java實現QQ登陸后的面板的問題感到十分頭疼,最近我因在寫模擬QQ的項目,故不可或缺的遇到了這一個問題,在網上我google了,百度了,最終發現的是有很多人被這一問題困擾,卻沒有解決的方案,估計是那些寫出來了的人,沒有發布到網上來,如今,經過自己的多方面查找資料,終于把他寫出來了,也不枉昨晚熬夜了,呵呵,好了先讓我們來看看實現的效果截圖: 

QQ好友列表樹形列表java代碼實現代碼

QQ好友列表樹形列表java代碼實現代碼

QQ好友列表樹形列表java代碼實現代碼

      好了,效果就是這樣了,雖然實現了基本功能,但是還是不完美,比如說好友面板不能隨著窗口改變大小而改變,不過應該已經可以解決了,只是還沒實踐,下面就發上源代碼:

一共有三個類: 

MemberModel.java //顯示類QQ似好友標簽信息的模板類;        

TestPane.java    //添加多個模板的容器類;             

TestFrame.java   //窗體類;

核心部分是前面兩個類,注意,第二個類的布局方式不能為空,否則不能是容器顯示滾動條,這是實現這個面板功能的一個難題,因為我不怎么會使用其他的布局方式,就只經常用空布局,經過這次才知道,光用空布局是不行的,空布局的應用受到了太多的限制。

在TestPane.java中添加好友信息的方式應該是代碼添加黑名單信息的方式,可在其他類中調用方法,傳遞參數(數組)過來,然后對信息模板進行初始化,還有面板上的信息模板從程序剛開始運行就生成了,只是設置了不可見,后點擊相關分類標簽后的可視與不可視是同理的,也就是說你有多少個好友就一直會有多少個JLabel存在你的面板上,只是你可能看不見他們,我感覺自己的實現方式不是很好。還有在我所用的這種布局方式中,顯示Label的寬度是一定的,我不知道怎么設置他的寬度和高度,所以通過在Label上添加了一個白色圖標(185 X 60)來使Label變寬,然后再添加模板JPanel,如果網友們還有好的解決方法,希望不吝賜教。

下面是源碼:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package coolbaby6;
 
import javax.swing.ImageIcon;
 
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.Rectangle;
import javax.swing.JLabel;
import java.awt.Dimension;
import java.awt.Font;
 
public class MemberModel{
 
 private static final long serialVersionUID = 1L;
 
 public JButton jButton = null;//顯示好友頭像
 
 public JPanel jPanel = new JPanel();//模板容器;
 
 private JLabel lb_nickName = null;//顯示昵稱;
 
 private int pic;
 
 private String nickname = null;
 
 private JLabel lb_mood = null;//顯示心情;
 
 
 public MemberModel(int pic, String nickname, int len) {
 super();
 this.pic = pic;//頭像編(有多種方法可以實現,這種最簡單)
 this.nickname = nickname;//昵稱;
 initialize();
 }
 
 
 private void initialize() {
 lb_mood = new JLabel();
 lb_mood.setBounds(new Rectangle(51, 30, 131, 20));
 lb_mood.setFont(new Font("Dialog", Font.PLAIN, 12));
 lb_mood.setText("世界上最遙遠的距離不是生與死,而是我站在你面前你卻不知道我愛你!");
 lb_mood.addMouseListener(new java.awt.event.MouseAdapter() {
  public void mouseEntered(java.awt.event.MouseEvent e) {
  exchangeEnter();
  lb_mood.setToolTipText(lb_mood.getText());
  }
  public void mouseExited(java.awt.event.MouseEvent e) {
  exchangeExited();
  }
 
 });
 lb_nickName = new JLabel();
 lb_nickName.setBounds(new Rectangle(52, 10, 80, 20));
 lb_nickName.setFont(new Font("Dialog", Font.BOLD, 14));
 lb_nickName.setText(nickname);
 jPanel.setSize(new 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.MouseEvent e) {
  exchangeExited();//鼠標移出模板區,改變背景顏色;
  }
 
  public void mouseEntered(java.awt.event.MouseEvent e) {
  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(new Rectangle(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) { 
   exchangeExited();//鼠標移出模板區,改變背景顏色;
  }
  public void mouseEntered(java.awt.event.MouseEvent e) { 
   exchangeEnter();//鼠標移進模板區,改變背景顏色;
  }
  });
 
 }
 return jButton;
 }
}

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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 extends JPanel {
 
 private static final long serialVersionUID = 1L;
 private JLabel jLabel = null;
 private JLabel jLabel1 = null;
 private JLabel jLabel11 = null;
 private JLabel jLabel12 = null;
 private int clickF=0;
 private int clickB=0;
 
 public TestPane() {
 super();
 initialize();
 }
 
 private void initialize() {
  
 jLabel12 = new JLabel();
 jLabel12.setIcon(new ImageIcon("img/bg.jpg"));
 jLabel12.add(new 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.addMouseListener(new java.awt.event.MouseAdapter() {
  public void mouseClicked(java.awt.event.MouseEvent e) {
  clickF+=1;
  if(clickF%2==1){
   jLabel1.setVisible(false);
   jLabel11.setVisible(false);
   jLabel12.setVisible(false);
   jLabel.setIcon(new ImageIcon("img/ico2.jpg"));
   update();
  }else{
   jLabel1.setVisible(true);
   jLabel11.setVisible(true);
   jLabel12.setVisible(true);
   jLabel.setIcon(new ImageIcon("img/ico.jpg"));
   update();
  
  }
 });
 this.setLayout(new 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(){//更新UI界面;
 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();
  }
 }
 update();
 }
 private void clickBlack(JLabel []jb){//點擊標簽,將后面的標簽全部設為可視;
 for(int i=1;i<jb.length;i++){
  try{
  jb[i].setVisible(true);
  }catch(Exception e){
  e.printStackTrace();
  }
  
 }
 update();
 }
 
 private void addJLabel(){//添加黑名單的內容;
 final 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].setIcon(new ImageIcon("img/ico.jpg"));
  }else{
   clickBlack2(jb);
   jb[0].setIcon(new ImageIcon("img/ico2.jpg"));
  }
  
  }
 });
 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);
 }
 
 }
 
}

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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.SwingUtilities;
 
public class TestFrame {
 
 private JFrame jFrame = null;
 
 private 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("模擬實現QQ面板功能");
  jFrame.setContentPane(getJContentPane());
 }
 return 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 );//不顯示水平滾動條;
 }
 return scrollPane;
 }
 
 
 private JPanel getJContentPane() {//實例化底層的容器JPanel;
 if (jContentPane == null) {
  jContentPane = new JPanel();
  jContentPane.setLayout(new BorderLayout());
  jContentPane.add(getScrollPane(), BorderLayout.CENTER);
 }
 return jContentPane;
 }
}

能成功編譯成功我的源代碼的方略: 
①、建一個項目,按我的類名建3個類,將源代碼拷貝進去; 
②、在項目根目錄下建一個名為img的文件夾,將要用到的圖片放進去。(相關圖片不再上傳了,自己隨便找幾個圖片測試即可) 
③、編譯實現;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩中文字幕在线播放 | 国内久久精品 | 成人久久18免费观看 | 免费又黄又爽又色的视频 | 日韩精品在线免费视频 | 久久久久久久9 | 日韩视频精品在线观看 | av一区二区三区四区 | 欧美精品久久久久久久久老牛影院 | 天天成人综合网 | 欧美成人精品一区二区三区 | 国产精品免费久久久久久久久久中文 | 成人a级片在线观看 | 日韩一区免费在线观看 | 少妇看av一二三区 | 国产第一区二区三区 | 久久一区| 亚洲品质自拍视频网站 | 国产精品99久久久久久动医院 | 欧美第8页 | 国产精品久久久久一区二区三区 | 中文字幕在线免费视频 | 久久精品久久久久电影 | 久久免费福利视频 | 日韩三区 | 欧美亚洲天堂 | 影音先锋中文字幕一区 | 欧美在线综合 | 99视频在线 | 亚洲在线一区二区 | 亚洲免费a | 美女久久久久 | 视频一二区 | 国产高清精品一区二区三区 | 亚洲国产精品久久久 | 欧美黑人一级爽快片淫片高清 | 国产精品99久久久久久动医院 | 日韩欧美手机在线 | 久久91精品 | 午夜a级理论片915影院 | 亚洲欧美精品一区二区三区 |