JTree 樹 節點渲染和資源管理器載入 一

2021-09-12 06:01:58 字數 3525 閱讀 2413

前面已經把樹的基本使用、樹的事件和樹的資料取得寫完了,並看了乙個sun提供的最簡單的樹的例子,這一專題我們講兩個方面,乙個是使用樹的renderer和editor構造一棵我們自己的樹;乙個樹使用swingworker完成一棵資源管理器樹的載入.

先看渲染的例子:

我們為我們的樹增加了可用與否、可見與否和節點的屬性,當然你也可以自己新增想要的屬性,比如順序等.

整個實現的過程很清晰,也不複雜,我們首先實現我們自己的treenode,它繼承於

defaultmutabletreenode,

我們在裡面新增自己的屬性

;然後是實現樹的節點的

renderer

和editor,

在renderer

裡我們設定可用也否

,選擇狀態

,節點等;在

editor

裡我們設定樹的容器布局

.最後構造樹時使用

setrenderer

和seteditor

就可以了

,需要注意的是如果僅僅是呈現,設定

renderer

就可以了

,如果除了呈現還有操作的話

,必須都要設定.

先看我們自己的treenode類, 繼承於

defaultmutabletreenode,

/*** the tree node that i rewrite it. */

publicclassmytreenodeextendsdefaultmutabletreenode

publicmytreenode(object userobject,booleanallowschildren,

booleanisselected,booleanenabled,booleanisvisible, icon icon)

然後就是一些設定和取得屬性的方法,這個類就相當於乙個bean.

然後就是rnederer了,我們這裡繼承於

defaulttreecellrenderer

publicclassmytreerendererextendsdefaulttreecellrenderer {

然後複寫它的

gettreecellrenderercomponent方法:

@override

publiccomponent gettreecellrenderercomponent(jtree tree, object value,booleansel,booleanexpanded,booleanleaf,introw,

booleanhasfocus) {

然後設定節點的屬性:

首先是顯示文字:

string strin**alue = tree.convertvaluetotext(value, sel, expanded, leaf, row, hasfocus);

settext(strin**alue);

然後是可用與否:

booleannodeisenabled = ((mytreenode) value).isenabled();

booleanisenabled = (treeisenabled && nodeisenabled);

setenabled(isenabled);

然後是是

icon icon = ((mytreenode) value).geticon();

seticon(icon);

還有一些基本的屬性

,比如背景色等:

setforeground(gettextselectioncolor());

再來需要看的類就是editor了,它繼承於

defaulttreecelleditor:

publicclassmycelleditorextendsdefaulttreecelleditor {

因為我們使用的是

jlabel

作為顯示控制項

,所以我們的主要實現是布局處理

,對於事件可以不需要考慮

.我們複習了

defaulttreecelleditor

的預設布局:

/*** container responsible for placing the editingcomponent. */

privateclassmyeditorcontainerextends

defaulttreecelleditor.editorcontainer {

複寫它的

dolayout

方法:

@override

publicvoiddolayout() {

取得節點的邊緣和大小:

r =

tree

.getbounds(r);

esize.

width

= r.

width

- (offset

* n);

editingcomponent

.setlocation(

offset

, 0);

設定節點的位置和大小:

setsize(newdimension(esize.

width

+ offset

, csize.

height

));

最後就是使用了

,很簡單和以前一樣

,直接使用

jtree

的設定方法就可以了:

mytreerenderer renderer =newmytreerenderer();

tree

.setcellrenderer(renderer);

tree

.seteditable(true);

tree

.setcelleditor(newmycelleditor(

tree,

(defaulttreecellrenderer)

tree

.getcellrenderer()));

YARN資源管理和排程簡介

1 執行在yarn上的mapreduce應用程式 2 執行在yarn上的storm應用程式 3 yarn應用程式基本構成 客戶端 4 以mapreduce應用程式為例 mapreduce客戶端 將mapreduce作業提交到yarn上 查詢mapreduce作業執行狀態 管理mapreduce作業,...

Spring Bean的自動裝配和資源管理

autowiring 在全域性屬性中宣告 default auotowire byname 屬性 no 什麼也不做 byname 根據屬性名稱自動裝配,此選項將檢查容器,並找到名稱和屬性完全一樣的bean,然後將其與屬性自動裝配。若id重複,會報異常。bytype 根據型別自動裝配 屬性型別 同上,...

MTK資源管理和問題解決

使用mtk作開發,常常不可避免和資源打交道,常使用的資源有字串,字型,選單,風格,聲音等,mtk好像沒有系統的專門的資源管理工具,導致資源管理十分凌亂而容易出問題,雖然有些牛人也開發了一些工具來管理這些資源,但由於使用不便或者其他一些原因,比如資源由大量的巨集控制,以及修改維護的人多,還有一些其他各...