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

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

?? basictreeui.java

?? java1.6眾多例子參考
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
                    xRect.width -= totalChildIndent + totalChildIndent;                } else {                    TreePath lastChildPath = path.pathByAddingChild(                        model.getChild(root, model.getChildCount(root) - 1));                    xRect = tree.getPathBounds(lastChildPath);                }                rect.x = xRect.x;                rect.width = xRect.width;            } else {                rect = tree.getPathBounds(path.pathByAddingChild(                    model.getChild(path.getLastPathComponent(), index)));            }        }        if (rect.y != 0) {            rect.y--;        }        if (!ltr) {            rect.x = rect.x + rect.width - 100;        }        rect.width = 100;        rect.height = 2;        return rect;    }    /**     * Paints the horizontal part of the leg. The receiver should     * NOT modify <code>clipBounds</code>, or <code>insets</code>.<p>     * NOTE: <code>parentRow</code> can be -1 if the root is not visible.     */    protected void paintHorizontalPartOfLeg(Graphics g, Rectangle clipBounds,					    Insets insets, Rectangle bounds,					    TreePath path, int row,					    boolean isExpanded,					    boolean hasBeenExpanded, boolean					    isLeaf) {	if (!paintLines) {	    return;	}        // Don't paint the legs for the root'ish node if the        int depth = path.getPathCount() - 1;	if((depth == 0 || (depth == 1 && !isRootVisible())) &&	   !getShowsRootHandles()) {	    return;        }	int clipLeft = clipBounds.x;        int clipRight = clipBounds.x + clipBounds.width;	int clipTop = clipBounds.y;        int clipBottom = clipBounds.y + clipBounds.height;	int lineY = bounds.y + bounds.height / 2;        if (leftToRight) {            int leftX = bounds.x - getRightChildIndent();            int nodeX = bounds.x - getHorizontalLegBuffer();            if(lineY >= clipTop                     && lineY < clipBottom                     && nodeX >= clipLeft                     && leftX < clipRight                     && leftX < nodeX) {                 g.setColor(getHashColor());                 paintHorizontalLine(g, tree, lineY, leftX, nodeX - 1);             }        } else {            int nodeX = bounds.x + bounds.width + getHorizontalLegBuffer();             int rightX = bounds.x + bounds.width + getRightChildIndent();             if(lineY >= clipTop                     && lineY < clipBottom                     && rightX >= clipLeft                     && nodeX < clipRight                     && nodeX < rightX) {                 g.setColor(getHashColor());                 paintHorizontalLine(g, tree, lineY, nodeX, rightX - 1);             }        }    }    /**     * Paints the vertical part of the leg. The receiver should     * NOT modify <code>clipBounds</code>, <code>insets</code>.<p>     */    protected void paintVerticalPartOfLeg(Graphics g, Rectangle clipBounds,					  Insets insets, TreePath path) {	if (!paintLines) {	    return;	}        int depth = path.getPathCount() - 1;	if (depth == 0 && !getShowsRootHandles() && !isRootVisible()) {	    return;        }	int lineX = getRowX(-1, depth + 1);	if (leftToRight) {            lineX = lineX - getRightChildIndent() + insets.left;	}	else {            lineX = tree.getWidth() - lineX - insets.right +                    getRightChildIndent() - 1;	}	int clipLeft = clipBounds.x;	int clipRight = clipBounds.x + (clipBounds.width - 1);	if (lineX >= clipLeft && lineX <= clipRight) {	    int clipTop = clipBounds.y;	    int clipBottom = clipBounds.y + clipBounds.height;	    Rectangle parentBounds = getPathBounds(tree, path);	    Rectangle lastChildBounds = getPathBounds(tree,						     getLastChildPath(path));	    if(lastChildBounds == null)		// This shouldn't happen, but if the model is modified		// in another thread it is possible for this to happen.		// Swing isn't multithreaded, but I'll add this check in		// anyway.		return;	    int       top;	    if(parentBounds == null) {		top = Math.max(insets.top + getVerticalLegBuffer(),			       clipTop);	    }	    else		top = Math.max(parentBounds.y + parentBounds.height +			       getVerticalLegBuffer(), clipTop);	    if(depth == 0 && !isRootVisible()) {		TreeModel      model = getModel();		if(model != null) {		    Object        root = model.getRoot();		    if(model.getChildCount(root) > 0) {			parentBounds = getPathBounds(tree, path.				  pathByAddingChild(model.getChild(root, 0)));			if(parentBounds != null)			    top = Math.max(insets.top + getVerticalLegBuffer(),					   parentBounds.y +					   parentBounds.height / 2);		    }		}	    }	    int bottom = Math.min(lastChildBounds.y +				  (lastChildBounds.height / 2), clipBottom);            if (top <= bottom) {                g.setColor(getHashColor());                paintVerticalLine(g, tree, lineX, top, bottom);            }	}    }    /**     * Paints the expand (toggle) part of a row. The receiver should     * NOT modify <code>clipBounds</code>, or <code>insets</code>.     */    protected void paintExpandControl(Graphics g,				      Rectangle clipBounds, Insets insets,				      Rectangle bounds, TreePath path,				      int row, boolean isExpanded,				      boolean hasBeenExpanded,				      boolean isLeaf) {	Object       value = path.getLastPathComponent();	// Draw icons if not a leaf and either hasn't been loaded,	// or the model child count is > 0.	if (!isLeaf && (!hasBeenExpanded ||			treeModel.getChildCount(value) > 0)) {            int middleXOfKnob;            if (leftToRight) {                middleXOfKnob = bounds.x - getRightChildIndent() + 1;            } else {                middleXOfKnob = bounds.x + bounds.width + getRightChildIndent() - 1;            }            int middleYOfKnob = bounds.y + (bounds.height / 2);	    if (isExpanded) {		Icon expandedIcon = getExpandedIcon();		if(expandedIcon != null)		  drawCentered(tree, g, expandedIcon, middleXOfKnob,			       middleYOfKnob );	    }	    else {		Icon collapsedIcon = getCollapsedIcon();		if(collapsedIcon != null)		  drawCentered(tree, g, collapsedIcon, middleXOfKnob,			       middleYOfKnob);	    }	}    }    /**     * Paints the renderer part of a row. The receiver should     * NOT modify <code>clipBounds</code>, or <code>insets</code>.     */    protected void paintRow(Graphics g, Rectangle clipBounds,			    Insets insets, Rectangle bounds, TreePath path,			    int row, boolean isExpanded,			    boolean hasBeenExpanded, boolean isLeaf) {	// Don't paint the renderer if editing this row.	if(editingComponent != null && editingRow == row)	    return;	int leadIndex;	if(tree.hasFocus()) {	    leadIndex = getLeadSelectionRow();	}	else	    leadIndex = -1;	Component component;	component = currentCellRenderer.getTreeCellRendererComponent	              (tree, path.getLastPathComponent(),                       tree.isRowSelected(row), isExpanded, isLeaf, row,		       (leadIndex == row));		rendererPane.paintComponent(g, component, tree, bounds.x, bounds.y,				    bounds.width, bounds.height, true);    }    /**     * Returns true if the expand (toggle) control should be drawn for     * the specified row.     */    protected boolean shouldPaintExpandControl(TreePath path, int row,					       boolean isExpanded,					       boolean hasBeenExpanded,					       boolean isLeaf) {	if(isLeaf)	    return false;	int              depth = path.getPathCount() - 1;	if((depth == 0 || (depth == 1 && !isRootVisible())) &&	   !getShowsRootHandles())	    return false;	return true;    }    /**     * Paints a vertical line.     */    protected void paintVerticalLine(Graphics g, JComponent c, int x, int top,				    int bottom) {	if (lineTypeDashed) {	    drawDashedVerticalLine(g, x, top, bottom);	} else {	    g.drawLine(x, top, x, bottom);	}    }    /**     * Paints a horizontal line.     */    protected void paintHorizontalLine(Graphics g, JComponent c, int y,				      int left, int right) {	if (lineTypeDashed) {	    drawDashedHorizontalLine(g, y, left, right);	} else {	    g.drawLine(left, y, right, y);	}    }    /**     * The vertical element of legs between nodes starts at the bottom of the     * parent node by default.  This method makes the leg start below that.     */    protected int getVerticalLegBuffer() {	return 0;    }     /**     * The horizontal element of legs between nodes starts at the     * right of the left-hand side of the child node by default.  This     * method makes the leg end before that.     */    protected int getHorizontalLegBuffer() {	return 0;    }     private int findCenteredX(int x, int iconWidth) {        return leftToRight               ? x - (int)Math.ceil(iconWidth / 2.0)               : x - (int)Math.floor(iconWidth / 2.0);    }    //    // Generic painting methods    //    // Draws the icon centered at (x,y)    protected void drawCentered(Component c, Graphics graphics, Icon icon,				int x, int y) {        icon.paintIcon(c, graphics,                      findCenteredX(x, icon.getIconWidth()),                      y - icon.getIconHeight() / 2);    }    // This method is slow -- revisit when Java2D is ready.    // assumes x1 <= x2    protected void drawDashedHorizontalLine(Graphics g, int y, int x1, int x2){	// Drawing only even coordinates helps join line segments so they	// appear as one line.  This can be defeated by translating the	// Graphics by an odd amount.	x1 += (x1 % 2);	for (int x = x1; x <= x2; x+=2) {	    g.drawLine(x, y, x, y);	}    }    // This method is slow -- revisit when Java2D is ready.    // assumes y1 <= y2    protected void drawDashedVerticalLine(Graphics g, int x, int y1, int y2) {	// Drawing only even coordinates helps join line segments so they	// appear as one line.  This can be defeated by translating the	// Graphics by an odd amount.	y1 += (y1 % 2);	for (int y = y1; y <= y2; y+=2) {	    g.drawLine(x, y, x, y);	}    }    //    // Various local methods    //    /**     * Returns the location, along the x-axis, to render a particular row     * at. The return value does not include any Insets specified on the JTree.     * This does not check for the validity of the row or depth, it is assumed     * to be correct and will not throw an Exception if the row or depth     * doesn't match that of the tree.     *     * @param row Row to return x location for     * @param depth Depth of the row     * @return amount to indent the given row.     * @since 1.5     */    protected int getRowX(int row, int depth) {        return totalChildIndent * (depth + depthOffset);    }    /**     * Makes all the nodes that are expanded in JTree expanded in LayoutCache.     * This invokes updateExpandedDescendants with the root path.     */    protected void updateLayoutCacheExpandedNodes() {	if(treeModel != null && treeModel.getRoot() != null)	    updateExpandedDescendants(new TreePath(treeModel.getRoot()));    }    /**     * Updates the expanded state of all the descendants of <code>path</code>     * by getting the expanded descendants from the tree and forwarding     * to the tree state.     */    protected void updateExpandedDescendants(TreePath path) {	completeEditing();	if(treeState != null) {	    treeState.setExpandedState(path, true);	    Enumeration   descendants = tree.getExpandedDescendants(path);	    if(descendants != null) {		while(descendants.hasMoreElements()) {		    path = (TreePath)descendants.nextElement();		    treeState.setExpandedState(path, true);		}	    }	    updateLeadRow();	    updateSize();	}    }    /**     * Returns a path to the last child of <code>parent</code>.     */    protected TreePath getLastChildPath(TreePath parent) {	if(treeModel != null) {	    int         childCount = treeModel.getChildCount		(parent.getLastPathComponent());	    	    if(childCount > 0)		return parent.pathByAddingChild(treeModel.getChild			   (parent.getLastPathComponent(), childCount - 1));	}	return null;    }    /**     * Updates how much each depth should be offset by.     */    protected void updateDepthOffset() {	if(isRootVisible()) {	    if(getShowsRootHandles())		depthOffset = 1;	    else		depthOffset = 0;	}	else if(!getShowsRootHandles())	    depthOffset = -1;	else	    depthOffset = 0;    }    /**       * Updates the cellEditor based on the editability of the JTree that      * we're contained in.  If the tree is editable but doesn't have a      * cellEditor, a basic one will be used.      */    protected void updateCellEditor() {	TreeCellEditor        newEditor;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品欧美精品| 精品91自产拍在线观看一区| 一区在线中文字幕| 99国产一区二区三精品乱码| 中文字幕在线不卡一区| 91原创在线视频| 亚洲精品你懂的| 欧美三级在线看| 美国三级日本三级久久99 | 成人短视频下载| 国产精品区一区二区三区| 99综合电影在线视频| 亚洲高清免费视频| 日韩精品专区在线影院观看| 国产成人无遮挡在线视频| 国产精品久久久久影院老司| 欧美性大战xxxxx久久久| 日本aⅴ免费视频一区二区三区| 欧美xxxxx牲另类人与| 国产成人精品免费网站| 亚洲一线二线三线久久久| 欧美一级搡bbbb搡bbbb| 国产精品一区二区三区四区| 1000精品久久久久久久久| 欧美日韩电影一区| 国模少妇一区二区三区| 亚洲天堂福利av| 91精品国产91热久久久做人人| 国产精品77777| 亚洲一区免费在线观看| 久久久久久久久久久久久女国产乱| 99久久99久久精品免费观看 | 日本欧美久久久久免费播放网| 久久―日本道色综合久久| 色哟哟国产精品免费观看| 日本不卡123| 亚洲一区二区五区| 精品国产电影一区二区| 91国产丝袜在线播放| 国产一区二区美女诱惑| 亚洲一区二区三区自拍| 久久久激情视频| 欧美伊人久久久久久久久影院| 国产激情视频一区二区三区欧美| 亚洲日本中文字幕区| 精品国产制服丝袜高跟| 91福利在线播放| 国产99久久久精品| 青青草原综合久久大伊人精品| 最新日韩av在线| 国产校园另类小说区| 日韩一区二区三区电影| 欧美视频一区在线| 91亚洲精品久久久蜜桃| 国产毛片精品国产一区二区三区| 日日骚欧美日韩| 一区二区三区日韩精品视频| 欧美国产激情二区三区| 精品福利一二区| 欧美一区在线视频| 欧美综合色免费| 成人国产在线观看| 国产一区二区91| 另类小说欧美激情| 日韩国产成人精品| 亚洲国产精品久久久男人的天堂| 国产精品不卡在线观看| 久久久精品天堂| 精品播放一区二区| 日韩欧美国产一区在线观看| 欧美精品视频www在线观看 | 99国产精品久久久久久久久久| 国产原创一区二区三区| 久久99蜜桃精品| 久久99日本精品| 国产麻豆91精品| 国产精品99久久久| 国产白丝网站精品污在线入口| 国产一区二区成人久久免费影院 | 777久久久精品| 欧美丰满一区二区免费视频| 欧美日韩国产高清一区| 欧美日韩成人在线一区| 制服丝袜亚洲色图| 日韩一区二区免费在线电影 | 欧美欧美欧美欧美| 欧美人妇做爰xxxⅹ性高电影 | 亚洲欧洲综合另类| 亚洲天堂成人在线观看| 亚洲欧美日韩国产一区二区三区| 亚洲精品老司机| 天堂精品中文字幕在线| 美女在线视频一区| 极品少妇一区二区三区精品视频| 国产精品自在欧美一区| 国产91精品免费| 91香蕉视频黄| 欧美伦理视频网站| 欧美大片顶级少妇| 中文字幕欧美日韩一区| 一区二区三区小说| 蜜臀久久99精品久久久画质超高清| 久久www免费人成看片高清| 国产69精品久久777的优势| 99国产精品国产精品久久| 欧美综合久久久| 日韩一区二区精品| 亚洲国产电影在线观看| 亚洲一区二区三区在线看| 日本中文在线一区| 国产a久久麻豆| 欧美日韩国产综合视频在线观看| 日韩欧美一区二区免费| 中文字幕中文字幕中文字幕亚洲无线| 一区二区三区国产精华| 久久精品国产久精国产爱| 不卡的av网站| 日韩欧美亚洲另类制服综合在线| 国产精品电影一区二区| 五月婷婷激情综合网| 国产ts人妖一区二区| 欧美日韩国产片| 中文字幕一区二区三区在线播放| 日韩精品1区2区3区| 波多野结衣精品在线| 欧美大尺度电影在线| 亚洲欧美日韩电影| 久久99国产精品尤物| 色综合久久久久久久| 26uuu色噜噜精品一区二区| 亚洲黄色小视频| 国产电影一区二区三区| 欧美伦理视频网站| 亚洲精品国产第一综合99久久 | 成人激情小说乱人伦| 911精品国产一区二区在线| 国产精品天美传媒| 久热成人在线视频| 欧美日韩国产一级二级| 亚洲天堂成人网| 成人精品免费网站| 久久网站热最新地址| 亚洲不卡在线观看| 91免费观看视频| 日本一区二区免费在线| 紧缚捆绑精品一区二区| 欧美一区二区三区在线视频| 一区二区三区四区精品在线视频| 成人一二三区视频| 精品国产电影一区二区 | 国产自产高清不卡| 欧美日韩一区二区不卡| 亚洲视频中文字幕| 成人动漫一区二区在线| 欧美激情自拍偷拍| 国产麻豆精品theporn| 欧美r级电影在线观看| 日韩精品欧美精品| 欧美高清激情brazzers| 亚洲午夜精品在线| 在线观看三级视频欧美| 亚洲精品视频观看| 在线精品视频一区二区| 一个色在线综合| 在线免费精品视频| 亚洲一区二区在线观看视频| 欧洲视频一区二区| 亚洲自拍偷拍麻豆| 欧美性生活大片视频| 亚洲午夜电影网| 欧美精品在线观看播放| 日韩成人伦理电影在线观看| 337p亚洲精品色噜噜狠狠| 日韩国产欧美一区二区三区| 欧美精选一区二区| 日韩av网站免费在线| 日韩三级精品电影久久久| 美脚の诱脚舐め脚责91| 26uuu色噜噜精品一区| 国产成+人+日韩+欧美+亚洲 | 一区二区三区免费网站| 在线看日韩精品电影| 五月天欧美精品| 日韩欧美中文字幕一区| 精品一区二区三区香蕉蜜桃| 日韩欧美一级在线播放| 国产精品一区二区你懂的| 国产欧美中文在线| 色成年激情久久综合| 日韩在线a电影| 久久网站热最新地址| www.性欧美| 亚洲国产aⅴ成人精品无吗| 欧美一区二区三区喷汁尤物| 久久超级碰视频| 亚洲欧美日韩在线不卡| 欧美精品v国产精品v日韩精品| 狠狠色丁香久久婷婷综| 国产精品国产三级国产普通话三级| 色八戒一区二区三区|