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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? elementtreepanel.java

?? 一個小公司要求給寫的很簡單的任務管理系統。
?? 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;	}    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
bt7086福利一区国产| 精品少妇一区二区三区| 99re亚洲国产精品| 国产精品亚洲第一区在线暖暖韩国| 亚洲第一福利一区| 亚洲国产精品欧美一二99| 亚洲人xxxx| 亚洲成人动漫一区| 久久激五月天综合精品| 麻豆国产91在线播放| 紧缚奴在线一区二区三区| 久久精品国产亚洲高清剧情介绍| 午夜视频久久久久久| 日韩av电影免费观看高清完整版| 日韩黄色在线观看| 久久成人免费网站| 国产麻豆精品久久一二三| 国产精品综合在线视频| av动漫一区二区| 91一区二区三区在线观看| av动漫一区二区| 制服丝袜激情欧洲亚洲| 久久久美女毛片| 亚洲精品视频在线观看网站| 亚洲一区二区三区影院| 国产乱子伦视频一区二区三区| 91麻豆精品秘密| 7777精品伊人久久久大香线蕉的 | 亚洲视频一区二区在线| 亚洲高清不卡在线观看| 日韩成人精品视频| eeuss国产一区二区三区| 欧美午夜片在线看| 国产午夜精品一区二区三区视频| 一区二区三区四区在线免费观看| 日韩高清国产一区在线| 国产精品自拍av| 91久久香蕉国产日韩欧美9色| 日韩免费视频线观看| 一区二区三区四区视频精品免费| 蜜桃视频在线观看一区二区| 99视频精品全部免费在线| 日韩一级完整毛片| 国产精品国产a| 精一区二区三区| 欧美精品三级日韩久久| 日本一区二区三区免费乱视频| 精品亚洲免费视频| 婷婷开心激情综合| 99久久99久久久精品齐齐| 精品久久久久一区二区国产| 亚洲精品乱码久久久久久黑人| 美国毛片一区二区| 欧美一区二区三区视频在线 | 亚洲网友自拍偷拍| 日本电影亚洲天堂一区| 亚洲精品中文在线观看| 色琪琪一区二区三区亚洲区| 国产精品国模大尺度视频| 国产福利一区二区三区视频| 26uuu精品一区二区三区四区在线| 国产精品一区在线| 久久久久久久久久久久电影 | 国产一区二区三区免费| 欧美日韩精品三区| 亚洲国产精品一区二区久久| 欧美午夜一区二区三区免费大片| 午夜欧美一区二区三区在线播放| 欧美日韩小视频| 麻豆国产精品777777在线| 中文字幕一区在线观看视频| 在线观看av不卡| 国产精品久久久久久久第一福利| 成人性生交大合| 中文字幕亚洲一区二区av在线| 99精品一区二区三区| 久久99久久99| 国产精品美女久久福利网站 | 成人avav在线| 精品一区二区三区av| 中文字幕亚洲精品在线观看| 正在播放一区二区| 日本福利一区二区| 国产成人综合在线观看| 亚洲国产精品久久不卡毛片| 欧美电视剧在线观看完整版| 国产99久久久久久免费看农村| 亚洲视频免费观看| 久久久久久久久久久久电影 | 91精品福利视频| 久久精品国产77777蜜臀| 国产精品乱码妇女bbbb| 欧洲一区二区av| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美精品久久99久久在免费线| 一本一本大道香蕉久在线精品| 狠狠色丁香久久婷婷综| 久久99国产精品尤物| 久久精品国产亚洲高清剧情介绍 | 成人免费小视频| 中文字幕一区二区三区四区 | 蜜臀久久久久久久| 日本中文字幕不卡| 另类小说综合欧美亚洲| 蜜臀久久99精品久久久久久9| 一区二区三区视频在线观看| 国产精品精品国产色婷婷| 国产精品福利一区二区三区| 26uuu久久综合| 国产精品成人免费精品自在线观看 | 国产精品全国免费观看高清 | 91精品国产免费| 26uuu久久天堂性欧美| 国产精品黄色在线观看| 一区二区三国产精华液| 日本亚洲三级在线| 极品瑜伽女神91| 另类小说综合欧美亚洲| 成人开心网精品视频| 在线观看欧美日本| 91精品国产高清一区二区三区蜜臀 | 精品久久久久久综合日本欧美| 国产亚洲婷婷免费| 亚洲精品日韩一| 免费看欧美女人艹b| 国产精品一二一区| 欧美日韩一区二区电影| 日韩欧美专区在线| 亚洲高清免费观看| av在线播放不卡| www久久精品| 日韩av不卡一区二区| 国产+成+人+亚洲欧洲自线| 91九色02白丝porn| 日韩欧美一二区| 亚洲综合在线观看视频| 国产sm精品调教视频网站| 欧美xxxxxxxx| 亚洲一区二区三区四区在线| 99久久免费精品高清特色大片| 欧美日韩精品是欧美日韩精品| 久久久亚洲国产美女国产盗摄| 亚洲乱码国产乱码精品精小说| 免费在线观看日韩欧美| 欧美不卡123| 免费在线看成人av| 4438x成人网最大色成网站| 极品美女销魂一区二区三区| 欧美人xxxx| 美国一区二区三区在线播放| 欧美日韩免费高清一区色橹橹| 亚洲色大成网站www久久九九| 国产精品1区二区.| 国产视频在线观看一区二区三区| 青娱乐精品在线视频| 欧美挠脚心视频网站| 日韩精品成人一区二区在线| 91精品国产综合久久婷婷香蕉| 日韩av高清在线观看| 精品国产乱子伦一区| 蜜臀av一区二区在线观看| 欧美精品v国产精品v日韩精品| 日精品一区二区| 2021久久国产精品不只是精品| 国产一区二区电影| 国产精品午夜电影| 99免费精品视频| 理论片日本一区| 国产欧美日本一区二区三区| 91福利在线导航| 国产一区二区三区香蕉| 国产精品三级久久久久三级| 一本色道久久综合精品竹菊| 午夜精品久久久久影视| 精品国产在天天线2019| 91色porny| 国产精品自拍av| 午夜一区二区三区视频| 2021久久国产精品不只是精品| 国产aⅴ综合色| 天天综合网 天天综合色| 国产精品乱子久久久久| 欧美一级理论性理论a| av电影在线观看一区| 奇米一区二区三区av| 中文字幕乱码日本亚洲一区二区| 欧洲精品一区二区| 久久精品99国产精品日本| 夜夜精品浪潮av一区二区三区| 精品国产123| 日韩一级免费观看| 在线视频一区二区三| 丁香婷婷综合色啪| 性做久久久久久| 亚洲一级片在线观看| 中文字幕一区二区三区av| 精品精品国产高清一毛片一天堂| 欧美在线观看视频一区二区三区| 国产精品一区二区果冻传媒| 舔着乳尖日韩一区|