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

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java Swing樹(shù)狀組件JTree用法實(shí)例詳解

Java Swing樹(shù)狀組件JTree用法實(shí)例詳解

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

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

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

一、簡(jiǎn)單樣式

先看運(yùn)行效果:

Java Swing樹(shù)狀組件JTree用法實(shí)例詳解

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)建沒(méi)有父節(jié)點(diǎn)和子節(jié)點(diǎn)、但允許有子節(jié)點(diǎn)的樹(shù)節(jié)點(diǎn),并使用指定的用戶(hù)對(duì)象對(duì)它進(jìn)行初始化。
    // 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("陳夢(mèng)");
    node2.setnickname("夢(mèng)");
    group1.add(new defaultmutabletreenode(node2));
    treenode node3 = new treenode();
    node3.setname("上官飛兒");
    node3.setnickname("飛兒");
    group1.add(new defaultmutabletreenode(node3));
    defaultmutabletreenode group2 = new defaultmutabletreenode("銷(xiāo)售部");
    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 - m.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;
  }
  // 重點(diǎn)在tostring,節(jié)點(diǎn)的顯示文本就是tostring
  public string tostring()
  {
    return name + "["+nickname+"]";
  }
}

二、圖標(biāo)樣式

運(yùn)行效果:

Java Swing樹(shù)狀組件JTree用法實(shí)例詳解

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;
  }
  // 重點(diǎn)在tostring,節(jié)點(diǎn)的顯示文本就是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;
/**
 * 自定義樹(shù)描述類(lèi),將樹(shù)的每個(gè)節(jié)點(diǎn)設(shè)置成不同的圖標(biāo)
 *
 */
public class treecellrenderer extends defaulttreecellrenderer{
  private static final long  serialversionuid  = 1l;
  /**
   * 重寫(xiě)父類(lèi)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)建沒(méi)有父節(jié)點(diǎn)和子節(jié)點(diǎn)、但允許有子節(jié)點(diǎn)的樹(shù)節(jié)點(diǎn),并使用指定的用戶(hù)對(duì)象對(duì)它進(jìn)行初始化。
    // 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("陳夢(mèng)");
    node2.setnickname("夢(mèng)");
    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("銷(xiāo)售部");
    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 - m.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("你點(diǎn)擊了:" + user.tostring());
        }
        else if(object instanceof string)
        {
          string text = (string)object;
          system.out.println("你點(diǎn)擊了:" + text);
        }
      }
    });
  }
}

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 动漫美女人物被黄漫小说 | 国产一卡2卡3卡四卡精品网 | 欧美猛男同志video在线 | 日本在线不卡免 | 四虎国产视频 | 久久热在线视频精品店 | 五月桃花网婷婷亚洲综合 | 国产高清视频 | 亚洲色图影院 | 91啦中文在线观看 | 欧美又黄又激烈真实床戏 | 亚洲 欧美 国产 综合久久 | 国产区小视频 | 免费高清资源黄网站在线观看 | 午夜十八岁禁 | 欧美穿高跟鞋做爰 | 国产亚洲自愉自愉 | 久草高清在线 | 国产卡一卡二卡3卡乱码免费 | 吉川爱美与黑人解禁 | 日本xxoo动图网站欧美 | 日本不卡视频免费 | 好大好爽好涨太深了小喜 | 国产成人精品免费2021 | 四虎永久免费地址 | 日韩一区二区三区四区五区 | 99精品久久99久久久久久 | 欧美男人的天堂 | 特级毛片全部免费播放器 | 欧美成人一区二区 | 国产精品原创视频 | 精品视频在线免费观看 | 97视频人人 | 美女撒尿无遮挡免费中国 | 青草国产在线观看 | 日本午夜vr影院新入口 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 日韩福利一区 | 亚洲成人看片 | swag最新正在播放 | 久久亚洲午夜牛牛影视 |