国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 13:55:12
字體:
來源:轉載
供稿:網友

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


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

一共有三個類: 

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

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

TestFrame.java   //窗體類;

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

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

下面是源碼:

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; }}

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); }  }}

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的文件夾,將要用到的圖片放進去。(相關圖片不再上傳了,自己隨便找幾個圖片測試即可) 
③、編譯實現;

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贞丰县| 黔江区| 新和县| 明光市| 巴东县| 南木林县| 上饶县| 乌海市| 西林县| 永嘉县| 阿鲁科尔沁旗| 绥江县| 威远县| 兰考县| 察隅县| 平利县| 泸定县| 宜宾市| 德化县| 嘉义县| 招远市| 山东| 东源县| 教育| 区。| 镇安县| 通渭县| 临江市| 资溪县| 项城市| 合山市| 沐川县| 钟祥市| 江永县| 泗水县| 延庆县| 惠东县| 英吉沙县| 兰考县| 勃利县| 桃源县|