亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? elementtreepanel.java

?? 一個小公司要求給寫的很簡單的任務(wù)管理系統(tǒng)。
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
    // TreeSelectionListener    /**      * Called whenever the value of the selection changes.      * @param e the event that characterizes the change.      */    public void valueChanged(TreeSelectionEvent e) {	JTree       tree = getTree();	if(!updatingSelection && tree.getSelectionCount() == 1) {	    TreePath      selPath = tree.getSelectionPath();	    Object        lastPathComponent = selPath.getLastPathComponent();	    if(!(lastPathComponent instanceof DefaultMutableTreeNode)) {		Element       selElement = (Element)lastPathComponent;		updatingSelection = true;		try {		    getEditor().select(selElement.getStartOffset(),				       selElement.getEndOffset());		}		finally {		    updatingSelection = false;		}	    }	}    }    // Local methods    /**     * @return tree showing elements.     */    protected JTree getTree() {	return tree;    }    /**     * @return JTextComponent showing elements for.     */    protected JTextComponent getEditor() {	return editor;    }    /**     * @return TreeModel implementation used to represent the elements.     */    public DefaultTreeModel getTreeModel() {	return treeModel;    }    /**     * Updates the tree based on the event type. This will invoke either     * updateTree with the root element, or handleChange.     */    protected void updateTree(DocumentEvent event) {	updatingSelection = true;	try {	    TreeModel        model = getTreeModel();	    Object           root = model.getRoot();	    for(int counter = model.getChildCount(root) - 1; counter >= 0;		counter--) {		updateTree(event, (Element)model.getChild(root, counter));	    }	}	finally {	    updatingSelection = false;	}    }    /**     * Creates TreeModelEvents based on the DocumentEvent and messages     * the treemodel. This recursively invokes this method with children     * elements.     * @param event indicates what elements in the tree hierarchy have     * changed.     * @param element Current element to check for changes against.     */    protected void updateTree(DocumentEvent event, Element element) {        DocumentEvent.ElementChange ec = event.getChange(element);        if (ec != null) {	    Element[]       removed = ec.getChildrenRemoved();	    Element[]       added = ec.getChildrenAdded();	    int             startIndex = ec.getIndex();	    // Check for removed.	    if(removed != null && removed.length > 0) {		int[]            indices = new int[removed.length];		for(int counter = 0; counter < removed.length; counter++) {		    indices[counter] = startIndex + counter;		}		getTreeModel().nodesWereRemoved((TreeNode)element, indices,						removed);	    }	    // check for added	    if(added != null && added.length > 0) {		int[]            indices = new int[added.length];		for(int counter = 0; counter < added.length; counter++) {		    indices[counter] = startIndex + counter;		}		getTreeModel().nodesWereInserted((TreeNode)element, indices);	    }        }	if(!element.isLeaf()) {	    int        startIndex = element.getElementIndex		                       (event.getOffset());	    int        elementCount = element.getElementCount();	    int        endIndex = Math.min(elementCount - 1,					   element.getElementIndex				     (event.getOffset() + event.getLength()));	    if(startIndex > 0 && startIndex < elementCount &&	       element.getElement(startIndex).getStartOffset() ==	       event.getOffset()) {		// Force checking the previous element.		startIndex--;	    }	    if(startIndex != -1 && endIndex != -1) {		for(int counter = startIndex; counter <= endIndex; counter++) {		    updateTree(event, element.getElement(counter));		}	    }	}	else {	    // Element is a leaf, assume it changed	    getTreeModel().nodeChanged((TreeNode)element);	}    }    /**     * Returns a TreePath to the element at <code>position</code>.     */    protected TreePath getPathForIndex(int position, Object root,				       Element rootElement) {	TreePath         path = new TreePath(root);	Element          child = rootElement.getElement	                            (rootElement.getElementIndex(position));	path = path.pathByAddingChild(rootElement);	path = path.pathByAddingChild(child);	while(!child.isLeaf()) {	    child = child.getElement(child.getElementIndex(position));	    path = path.pathByAddingChild(child);	}	return path;    }    /**     * ElementTreeModel is an implementation of TreeModel to handle displaying     * the Elements from a Document. AbstractDocument.AbstractElement is     * the default implementation used by the swing text package to implement     * Element, and it implements TreeNode. This makes it trivial to create     * a DefaultTreeModel rooted at a particular Element from the Document.     * Unfortunately each Document can have more than one root Element.     * Implying that to display all the root elements as a child of another     * root a fake node has be created. This class creates a fake node as     * the root with the children being the root elements of the Document     * (getRootElements).     * <p>This subclasses DefaultTreeModel. The majority of the TreeModel     * methods have been subclassed, primarily to special case the root.     */    public static class ElementTreeModel extends DefaultTreeModel {	protected Element[]         rootElements;	public ElementTreeModel(Document document) {	    super(new DefaultMutableTreeNode("root"), false);	    rootElements = document.getRootElements();	}	/**	 * Returns the child of <I>parent</I> at index <I>index</I> in	 * the parent's child array.  <I>parent</I> must be a node	 * previously obtained from this data source. This should	 * not return null if <i>index</i> is a valid index for	 * <i>parent</i> (that is <i>index</i> >= 0 && <i>index</i>	 * < getChildCount(<i>parent</i>)).	 *	 * @param   parent  a node in the tree, obtained from this data source	 * @return  the child of <I>parent</I> at index <I>index</I>	 */	public Object getChild(Object parent, int index) {	    if(parent == root)		return rootElements[index];	    return super.getChild(parent, index);	}	/**	 * Returns the number of children of <I>parent</I>.  Returns 0	 * if the node is a leaf or if it has no children.	 * <I>parent</I> must be a node previously obtained from this	 * data source.	 *	 * @param   parent  a node in the tree, obtained from this data source	 * @return  the number of children of the node <I>parent</I>	 */	public int getChildCount(Object parent) {	    if(parent == root)		return rootElements.length;	    return super.getChildCount(parent);	}	/**	 * Returns true if <I>node</I> is a leaf.  It is possible for	 * this method to return false even if <I>node</I> has no	 * children.  A directory in a filesystem, for example, may	 * contain no files; the node representing the directory is	 * not a leaf, but it also has no children.	 *	 * @param   node    a node in the tree, obtained from this data source	 * @return  true if <I>node</I> is a leaf	 */	public boolean isLeaf(Object node) {	    if(node == root)		return false;	    return super.isLeaf(node);	}	/**	 * Returns the index of child in parent.	 */	public int getIndexOfChild(Object parent, Object child) {	    if(parent == root) {		for(int counter = rootElements.length - 1; counter >= 0;		    counter--) {		    if(rootElements[counter] == child)			return counter;		}		return -1;	    }	    return super.getIndexOfChild(parent, child);	}	/**	 * Invoke this method after you've changed how node is to be	 * represented in the tree.	 */	public void nodeChanged(TreeNode node) {	    if(listenerList != null && node != null) {		TreeNode         parent = node.getParent();		if(parent == null && node != root) {		    parent = root;		}		if(parent != null) {		    int        anIndex = getIndexOfChild(parent, node);		    if(anIndex != -1) {			int[]        cIndexs = new int[1];			cIndexs[0] = anIndex;			nodesChanged(parent, cIndexs);		    }		}	    }        }	/**	 * Returns the path to a particluar node. This is recursive.	 */	protected TreeNode[] getPathToRoot(TreeNode aNode, int depth) {	    TreeNode[]              retNodes;	    /* Check for null, in case someone passed in a null node, or	       they passed in an element that isn't rooted at root. */	    if(aNode == null) {		if(depth == 0)		    return null;		else		    retNodes = new TreeNode[depth];	    }	    else {		depth++;		if(aNode == root)		    retNodes = new TreeNode[depth];		else {		    TreeNode parent = aNode.getParent();		    if(parent == null)			parent = root;		    retNodes = getPathToRoot(parent, depth);		}		retNodes[retNodes.length - depth] = aNode;	    }	    return retNodes;	}    }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97成人超碰视| 国产精品亚洲成人| 亚洲欧美乱综合| 国产欧美日韩不卡| 久久久美女毛片| 精品福利二区三区| 久久久久久久综合色一本| 欧美一区二区在线视频| 精品视频一区二区三区免费| 色婷婷av一区二区三区之一色屋| 色综合 综合色| 91久久久免费一区二区| 色婷婷久久一区二区三区麻豆| 99国产精品久久久久久久久久 | 狠狠狠色丁香婷婷综合激情| 天天综合日日夜夜精品| 日本aⅴ免费视频一区二区三区| 日本三级亚洲精品| 精品一区二区三区久久| 成人丝袜高跟foot| 91尤物视频在线观看| 欧美日韩中文字幕一区| 9191成人精品久久| 欧美一级欧美三级| 久久精品日产第一区二区三区高清版 | 另类欧美日韩国产在线| 国产在线精品免费av| www.日韩精品| 欧美精品久久99久久在免费线 | 51精品久久久久久久蜜臀| 欧美一级在线免费| 久久久国产午夜精品| 亚洲天堂中文字幕| 日韩中文字幕亚洲一区二区va在线| 日韩专区中文字幕一区二区| 国产真实乱子伦精品视频| 99视频在线观看一区三区| 91国偷自产一区二区开放时间| 欧美美女黄视频| 国产亚洲欧美一区在线观看| 亚洲同性同志一二三专区| 亚洲成a人v欧美综合天堂下载 | 欧美经典一区二区| 亚洲一二三四久久| 国产一区二区精品久久99| 日本精品视频一区二区| 日韩欧美国产综合一区| 亚洲美女在线国产| 国产精品亚洲午夜一区二区三区| 91蝌蚪国产九色| 久久久久久毛片| 日本特黄久久久高潮| 色综合视频一区二区三区高清| 欧美va亚洲va| 视频一区二区三区在线| 国产成人av电影在线播放| 欧美日韩美少妇 | 在线免费观看成人短视频| 精品久久人人做人人爰| 亚洲第一福利视频在线| av一二三不卡影片| 精品久久久久av影院| 亚洲一区电影777| 色综合久久久久综合99| 国产免费成人在线视频| 国产一区二区在线影院| 欧美精品粉嫩高潮一区二区| 成人免费在线观看入口| 成人污视频在线观看| 久久久亚洲欧洲日产国码αv| 奇米色777欧美一区二区| 欧美三级电影网| 亚洲精品高清视频在线观看| 97久久精品人人做人人爽50路| 久久婷婷成人综合色| 国产在线精品国自产拍免费| 91精品午夜视频| 日韩精品一区第一页| 欧美日本一区二区在线观看| 亚洲一区二区欧美激情| 欧美性做爰猛烈叫床潮| 亚洲国产成人91porn| 色综合久久久网| 亚洲一区日韩精品中文字幕| 一本大道久久a久久综合婷婷| 国产精品水嫩水嫩| av不卡在线观看| 亚洲精品菠萝久久久久久久| 一本色道久久综合亚洲精品按摩| 亚洲人成精品久久久久| 色成年激情久久综合| 一区二区免费在线| 欧美亚洲国产bt| 午夜不卡在线视频| 日韩限制级电影在线观看| 精品一区二区日韩| 久久亚洲捆绑美女| 99久久久国产精品| 亚洲福利视频三区| 精品电影一区二区| 99v久久综合狠狠综合久久| 亚洲激情网站免费观看| 欧美挠脚心视频网站| 另类欧美日韩国产在线| 国产无遮挡一区二区三区毛片日本| 国产mv日韩mv欧美| 亚洲综合久久av| 欧美一区二区大片| 99精品桃花视频在线观看| 一区二区三区电影在线播| 欧美色精品在线视频| 久久国产生活片100| 亚洲欧洲三级电影| 日韩精品一区二区三区老鸭窝| 国产很黄免费观看久久| 亚洲亚洲精品在线观看| 久久品道一品道久久精品| 色妞www精品视频| 蜜臀精品久久久久久蜜臀| 国产精品麻豆视频| 91精品婷婷国产综合久久性色| 国产精品系列在线播放| 亚洲成av人在线观看| 国产午夜久久久久| 在线综合+亚洲+欧美中文字幕| 成人午夜视频在线观看| 天天免费综合色| 中文字幕一区二区5566日韩| 日韩小视频在线观看专区| 色视频欧美一区二区三区| 国产传媒日韩欧美成人| 首页国产欧美日韩丝袜| 中文字幕一区二区三区乱码在线| 欧美一级艳片视频免费观看| 日本久久一区二区三区| 丁香婷婷综合五月| 精东粉嫩av免费一区二区三区| 亚洲一区二区影院| 中文字幕日韩精品一区| 国产欧美一区二区精品性色| 欧美成人一区二区| 337p亚洲精品色噜噜噜| 色8久久人人97超碰香蕉987| 成人一级片在线观看| 久草精品在线观看| 麻豆精品在线看| 日日欢夜夜爽一区| 日韩有码一区二区三区| 亚洲成人自拍一区| 亚洲电影第三页| 亚洲福利视频一区二区| 亚洲国产美国国产综合一区二区| 日韩美女视频一区二区| 国产精品久久久爽爽爽麻豆色哟哟| 久久久影视传媒| 国产午夜精品久久久久久久| 2024国产精品| 国产婷婷色一区二区三区四区| 久久久久久综合| 亚洲国产精品激情在线观看| 国产欧美精品国产国产专区| 久久免费视频色| 国产午夜亚洲精品午夜鲁丝片| 久久久久99精品一区| 日本一区二区综合亚洲| 国产欧美一区二区在线| 亚洲欧洲日产国产综合网| 亚洲日本免费电影| 亚洲自拍偷拍图区| 日韩在线一二三区| 韩国毛片一区二区三区| 国产激情一区二区三区桃花岛亚洲| 国产伦精品一区二区三区在线观看| 国产精品一级黄| jlzzjlzz欧美大全| 一本大道久久精品懂色aⅴ| 欧美日韩综合在线免费观看| 欧美一卡2卡3卡4卡| 国产亚洲一本大道中文在线| 中文字幕不卡三区| 亚洲夂夂婷婷色拍ww47| 热久久免费视频| 处破女av一区二区| 在线精品亚洲一区二区不卡| 69久久99精品久久久久婷婷| 精品福利一区二区三区免费视频| 中文在线免费一区三区高中清不卡| 中文字幕一区二区三区不卡| 午夜在线成人av| 国产电影一区二区三区| 欧美优质美女网站| 久久久九九九九| 亚洲mv在线观看| 国产一区二区三区观看| 欧美亚一区二区| 中文无字幕一区二区三区| 天堂久久久久va久久久久| 国产精品18久久久久久vr | 丝袜亚洲精品中文字幕一区| 九色综合国产一区二区三区|