想要實現jtree節點的式樣自定義,首先要繼承defaulttreecellrenderer類,defaulttreecellrenderer類是每個節點的父類。
public
class
treecell
extends
defaulttreecellrenderer
//繪製每個節點的式樣
@override
public
void
paint(graphics g)
// selected是defaulttreecellrenderer 類的成員屬性,可通過官方api檢視其用法
if (selected) else
super.paint(g);
}/**
* 重寫父類defaulttreecellrenderer的方法
*/@override
public component gettreecellrenderercomponent(jtree tree, object value,
boolean sel, boolean expanded, boolean leaf, int row, boolean hasfocus) catch (unknownhostexception e)
//去掉焦點虛框
if (hasfocus)
settextselectioncolor(color.black);
setbackgroundselectioncolor(new color(0,0,0,0));
setbackgroundnonselectioncolor(new color(0,0,0,0));
// 執行父類原型操作
super.gettreecellrenderercomponent(tree, value, sel, expanded, leaf, row, hasfocus);
// 得到每個節點的treenode
defaultmutabletreenode node = (defaultmutabletreenode) value;
//通過mouserow判斷滑鼠是否懸停在當前行
if (mouserow == row) else
// 得到每個節點的text
string str = node.tostring();
// 判斷是哪個文字的節點設定對應的值(這裡如果節點傳入的是乙個實體,則可以根據實體裡面的乙個型別屬性來顯示對應的圖示)
//設定節點icon
if (pattern.matches(".+_(.+)", str))
...return
this;}}
但是我們不能直接在defaulttreecellrenderer 中監聽到滑鼠事件,需要在jtree中監聽,然後傳遞給defaulttreecellrenderer 知道。
tree.addmousemotionlistener(new mousemotionadapter()
});
1、defaulttreecellrenderer 不能直接監聽滑鼠事件,需要由jtree來監聽後,傳遞給defaulttreecellrenderer
2、jtree監聽mousemoved事件可獲取滑鼠當前位置座標,通過座標獲取到該點在tree中所處的行數
3、tree.repaint()
4、在defaulttreecellrenderer 中包括了可以直接使用的成員屬性selected以及row,可通過row判斷滑鼠是否懸停在當前行,通過selected判斷當前行是否被選中。
VC實現類似Excel資料夾式樣的標籤控制
員的程式設計,mfc只是提供了乙個程式設計框架,應用的實質性 還是必須由程式設計師自己來寫。同時,mfc的問題也是顯而易見的,那就是其gui素材太豐富,以至於程式設計師們過分依賴mfc,當想要實現mfc中沒有的gui特性時便不知所措。對於如何實現資料夾式樣的標籤控制介面,有人可能想到了從現成的標籤控...
HAProxy實現Harbor的多節點負載均衡
實驗環境 haproxy節點 192.168.199.200 harbor1節點 192.168.199.200 harbor2節點 192.168.199.201見 見 sudo apt install haproxy vi etc haproxy haproxy.cfg 3.4 重啟rsyslo...
JS遍歷DOM 節點樹的實現
本文將分享 dom 節點樹深度遍歷 廣度遍歷 假定我僅遍歷 body 且其結構如下 class container class left class menu class right class box1 class box2 遍歷完父節點的所有子節點的子節點的子節點.再遍歷其兄弟節點。輸出 sec...