一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java Swing樹狀組件JTree用法實例詳解

Java Swing樹狀組件JTree用法實例詳解

2021-02-07 16:16SunnyYoona Java教程

這篇文章主要介紹了Java Swing樹狀組件JTree用法,結合具體實例形式分析了Swing組件JTree構成樹狀列表的節(jié)點設置與事件響應,以及自定義圖形節(jié)點的相關操作技,需要的朋友可以參考下

本文實例講述了java swing樹狀組件jtree用法。分享給大家供大家參考,具體如下:

一、簡單樣式

先看運行效果:

Java Swing樹狀組件JTree用法實例詳解

treenodedemo.java

?
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 awtdemo;
import javax.swing.jframe;
import javax.swing.jtree;
import javax.swing.event.treeselectionevent;
import javax.swing.event.treeselectionlistener;
import javax.swing.tree.defaultmutabletreenode;
public class treenodedemo {
  public static void main(string[] args) {
    // 創(chuàng)建沒有父節(jié)點和子節(jié)點、但允許有子節(jié)點的樹節(jié)點,并使用指定的用戶對象對它進行初始化。
    // public defaultmutabletreenode(object userobject)
    defaultmutabletreenode group1 = new defaultmutabletreenode("軟件部");
    treenode node1 = new treenode();
    node1.setname("王雨");
    node1.setnickname("漫天飛舞");
    group1.add(new defaultmutabletreenode(node1));
    treenode node2 = new treenode();
    node2.setname("陳夢");
    node2.setnickname("夢");
    group1.add(new defaultmutabletreenode(node2));
    treenode node3 = new treenode();
    node3.setname("上官飛兒");
    node3.setnickname("飛兒");
    group1.add(new defaultmutabletreenode(node3));
    defaultmutabletreenode group2 = new defaultmutabletreenode("銷售部");
    treenode node4 = new treenode();
    node4.setname("上官婉兒");
    node4.setnickname("婉兒");
    group2.add(new defaultmutabletreenode(node4));
    treenode node5 = new treenode();
    node5.setname("上官巧兒");
    node5.setnickname("巧兒");
    group2.add(new defaultmutabletreenode(node5));
    defaultmutabletreenode top = new defaultmutabletreenode("職員管理");
    top.add(group1);
    top.add(group2);
    final jtree tree = new jtree(top);
    jframe f = new jframe("jtreedemo - www.ythuaji.com.cn");
    f.add(tree);
    f.setsize(300, 300);
    f.setvisible(true);
    f.setdefaultcloseoperation(jframe.exit_on_close);
    // 添加選擇事件
    tree.addtreeselectionlistener(new treeselectionlistener()
    {
      @override
      public void valuechanged(treeselectionevent e)
      {
        defaultmutabletreenode node = (defaultmutabletreenode) tree.getlastselectedpathcomponent();
        if (node == null){
          return;
        }//if
        object object = node.getuserobject();
        treenode user = (treenode) object;
        system.out.println("你選擇了:" + user.tostring());
      }
    });
  }
}

treenode.java

?
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
package awtdemo;
public class treenode {
  private string nickname = "";
  private string name = "";
  private string phone = "";
  private int age;
  public string getname() {
    return name;
  }
  public void setname(string name) {
    this.name = name;
  }
  public string getnickname() {
    return nickname;
  }
  public void setnickname(string nickname) {
    this.nickname = nickname;
  }
  public string getphone() {
    return phone;
  }
  public void setphone(string phone) {
    this.phone = phone;
  }
  public int getage() {
    return age;
  }
  public void setage(int age) {
    this.age = age;
  }
  // 重點在tostring,節(jié)點的顯示文本就是tostring
  public string tostring()
  {
    return name + "["+nickname+"]";
  }
}

二、圖標樣式

運行效果:

Java Swing樹狀組件JTree用法實例詳解

treenode.java

?
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
package awtdemo;
public class treenode {
  private string nickname = "";
  private string name = "";
  private string phone = "";
  private int age;
  private string imagepath = "";
  public string getimagepath() {
    return imagepath;
  }
  public void setimagepath(string imagepath) {
    this.imagepath = imagepath;
  }
  public string getname() {
    return name;
  }
  public void setname(string name) {
    this.name = name;
  }
  public string getnickname() {
    return nickname;
  }
  public void setnickname(string nickname) {
    this.nickname = nickname;
  }
  public string getphone() {
    return phone;
  }
  public void setphone(string phone) {
    this.phone = phone;
  }
  public int getage() {
    return age;
  }
  public void setage(int age) {
    this.age = age;
  }
  // 重點在tostring,節(jié)點的顯示文本就是tostring
  public string tostring()
  {
    return name + "["+nickname+"]";
  }
}

treecellrenderer.java

?
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
package awtdemo;
import java.awt.component;
import javax.swing.imageicon;
import javax.swing.jtree;
import javax.swing.tree.defaultmutabletreenode;
import javax.swing.tree.defaulttreecellrenderer;
/**
 * 自定義樹描述類,將樹的每個節(jié)點設置成不同的圖標
 *
 */
public class treecellrenderer extends defaulttreecellrenderer{
  private static final long  serialversionuid  = 1l;
  /**
   * 重寫父類defaulttreecellrenderer的方法
   */
  @override
  public component gettreecellrenderercomponent(jtree tree, object value,
      boolean selected, boolean expanded, boolean isleaf, int row,boolean hasfocus)
  {
    // 選中
    if (selected)
    {
      setforeground(gettextselectioncolor());
    }
    else
    {
      setforeground(gettextnonselectioncolor());
    }
    // treenode
    defaultmutabletreenode treenode = (defaultmutabletreenode) value;
    object obj = treenode.getuserobject();
    if (obj instanceof treenode)
    {
      treenode node = (treenode) obj;
      defaulttreecellrenderer tempcellrenderer = new defaulttreecellrenderer();
      tempcellrenderer.setleaficon(new imageicon(node.getimagepath()));
      return tempcellrenderer.gettreecellrenderercomponent(tree, node.tostring(), selected, expanded, true, row, hasfocus);
    }
    else if (obj instanceof string)
    {
      string text = (string) obj;
      defaulttreecellrenderer tempcellrenderer = new defaulttreecellrenderer();
      tempcellrenderer.setopenicon(new imageicon("image/open.jpg"));
      tempcellrenderer.setclosedicon(new imageicon("image/close.jpg"));
      return tempcellrenderer.gettreecellrenderercomponent(tree, text, selected, expanded, false, row, hasfocus);
    }
    return super.gettreecellrenderercomponent(tree, value, selected, expanded, isleaf, row, hasfocus);
  }
}

treenodedemo.java

?
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
package awtdemo;
import javax.swing.jframe;
import javax.swing.jtree;
import javax.swing.event.treeselectionevent;
import javax.swing.event.treeselectionlistener;
import javax.swing.tree.defaultmutabletreenode;
public class treenodedemo {
  public static void main(string[] args) {
    // 創(chuàng)建沒有父節(jié)點和子節(jié)點、但允許有子節(jié)點的樹節(jié)點,并使用指定的用戶對象對它進行初始化。
    // public defaultmutabletreenode(object userobject)
    defaultmutabletreenode group1 = new defaultmutabletreenode("軟件部");
    treenode node1 = new treenode();
    node1.setname("王雨");
    node1.setnickname("漫天飛舞");
    node1.setimagepath("image/1.jpg");
    group1.add(new defaultmutabletreenode(node1));
    treenode node2 = new treenode();
    node2.setname("陳夢");
    node2.setnickname("夢");
    node2.setimagepath("image/2.jpg");
    group1.add(new defaultmutabletreenode(node2));
    treenode node3 = new treenode();
    node3.setname("上官飛兒");
    node3.setnickname("飛兒");
    node3.setimagepath("image/3.jpg");
    group1.add(new defaultmutabletreenode(node3));
    defaultmutabletreenode group2 = new defaultmutabletreenode("銷售部");
    treenode node4 = new treenode();
    node4.setname("上官婉兒");
    node4.setnickname("婉兒");
    node4.setimagepath("image/4.jpg");
    group2.add(new defaultmutabletreenode(node4));
    treenode node5 = new treenode();
    node5.setname("上官巧兒");
    node5.setnickname("巧兒");
    node5.setimagepath("image/5.jpg");
    group2.add(new defaultmutabletreenode(node5));
    defaultmutabletreenode root = new defaultmutabletreenode();
    root.add(group1);
    root.add(group2);
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    final jtree tree = new jtree(root);
    tree.setcellrenderer(new treecellrenderer());
    tree.putclientproperty("jtree.linestyle", "none");
    tree.setrootvisible(true);
    jframe frame = new jframe("jtreedemo - www.ythuaji.com.cn");
    frame.add(tree);
    frame.setsize(300, 300);
    frame.setvisible(true);
    frame.setdefaultcloseoperation(jframe.exit_on_close);
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // 添加選擇事件
    tree.addtreeselectionlistener(new treeselectionlistener()
    {
      @override
      public void valuechanged(treeselectionevent e)
      {
        defaultmutabletreenode node = (defaultmutabletreenode) tree.getlastselectedpathcomponent();
        if (node == null){
          return;
        }//if
        object object = node.getuserobject();
        if(object instanceof treenode)
        {
          treenode user = (treenode) object;
          system.out.println("你點擊了:" + user.tostring());
        }
        else if(object instanceof string)
        {
          string text = (string)object;
          system.out.println("你點擊了:" + text);
        }
      }
    });
  }
}

希望本文所述對大家java程序設計有所幫助。

原文鏈接:http://blog.csdn.net/sunnyyoona/article/details/46292355

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: asian4you裸模| 2019天天干天天操 | 精精国产xxxx视频在线播放器 | 亚洲国产精品久久无套麻豆 | 欧美亚洲天堂 | 久久这里只有精品视频e | 国产成人啪精品午夜在线播放 | 果冻传媒 天美 麻豆 | 男男gaygays18中国 | 嫩交18xxxx | 被巨大黑人的翻白眼 | 性欧美4khdxxxx| 免费毛片大全 | 精品福利一区二区免费视频 | 波多野结中文字幕在线69视频 | 成人永久免费 | 秋霞一级| 四虎黄色影视库 | 免费看打屁股视频的软件 | 美女狂揉尿口揉到失禁 | 魔法满屋免费观看完整版中文 | 99久久综合精品免费 | 手机看片国产自拍 | 黑白配高清hd在线视频 | 国产在视频线精品视频 | 亚洲国产成人精品无码区99 | 欧美成人中文字幕在线看 | 天天欲色成人综合网站 | 18free性欧美另类hd | 国产欧美视频高清va在线观看 | 国产成人福利美女观看视频 | 国产成人yy精品1024在线 | xx顶级欧美熟妞xxhd | 污到湿的爽文免费阅读 | 午夜福利体检 | 成人影院在线观看免费 | 国产男技师 | 成人精品 | 国产福利视频一区二区微拍视频 | 华人亚洲欧美精品国产 | 日韩精品成人a在线观看 |