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

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

?? basictreeui.java

?? JAVA的一些源碼 JAVA2 STANDARD EDITION DEVELOPMENT KIT 5.0
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
	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();	    }	    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;    }     //    // 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, x - icon.getIconWidth()/2, 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;	completeEditing();	if(tree == null)	    newEditor = null;	else {	    if(tree.isEditable()) {		newEditor = tree.getCellEditor();		if(newEditor == null) {		    newEditor = createDefaultCellEditor();		    if(newEditor != null) {			tree.setCellEditor(newEditor);			createdCellEditor = true;		    }		}	    }	    else		newEditor = null;	}	if(newEditor != cellEditor) {	    if(cellEditor != null && cellEditorListener != null)		cellEditor.removeCellEditorListener(cellEditorListener);	    cellEditor = newEditor;	    if(cellEditorListener == null)		cellEditorListener = createCellEditorListener();	    if(newEditor != null && cellEditorListener != null)		newEditor.addCellEditorListener(cellEditorListener);	    createdCellEditor = false;	}    }    /**      * Messaged from the tree we're in when the renderer has changed.      */    protected void updateRenderer() {	if(tree != null) {	    TreeCellRenderer      newCellRenderer;	    newCellRenderer = tree.getCellRenderer();	    if(newCellRenderer == null) {		tree.setCellRenderer(createDefaultCellRenderer());		createdRenderer = true;	    }	    else {		createdRenderer = false;		currentCellRenderer = newCellRenderer;		if(createdCellEditor) {		    tree.setCellEditor(null);		}	    }	}	else {	    createdRenderer = false;	    currentCellRenderer = null;	}	updateCellEditor();    }    /**     * Resets the TreeState instance based on the tree we're providing the     * look and feel for.     */    protected void configureLayoutCache() {	if(treeState != null && tree != null) {	    if(nodeDimensions == null)		nodeDimensions = createNodeDimensions();	    treeState.setNodeDimensions(nodeDimensions);	    treeState.setRootVisible(tree.isRootVisible());	    treeState.setRowHeight(tree.getRowHeight());	    treeState.setSelectionModel(getSelectionModel());	    // Only do this if necessary, may loss state if call with	    // same model as it currently has.	    if(treeState.getModel() != tree.getModel())		treeState.setModel(tree.getModel());	    updateLayoutCacheExpandedNodes();	    // Create a listener to update preferred size when bounds	    // changes, if necessary.	    if(isLargeModel()) {		if(componentListener == null) {		    componentListener = createComponentListener();		    if(componentListener != null)			tree.addComponentListener(componentListener);		}	    }	    else if(componentListener != null) {		tree.removeComponentListener(componentListener);		componentListener = null;	    }	}	else if(componentListener != null) {	    tree.removeComponentListener(componentListener);	    componentListener = null;	}    }    /**     * Marks the cached size as being invalid, and messages the     * tree with <code>treeDidChange</code>.     */    protected void updateSize() {	validCachedPreferredSize = false;	tree.treeDidChange();    }    /**     * Updates the <code>preferredSize</code> instance variable,     * which is returned from <code>getPreferredSize()</code>.<p>     * For left to right orientations, the size is determined from the     * current AbstractLayoutCache. For RTL orientations, the preferred size     * becomes the width minus the minimum x position.     */    protected void updateCachedPreferredSize() {	if(treeState != null) {	    Insets               i = tree.getInsets();	    if(isLargeModel()) {		Rectangle            visRect = tree.getVisibleRect();		if(i != null) {		    visRect.x -= i.left;		    visRect.y -= i.top;		}		if (leftToRight) {		    preferredSize.width = treeState.getPreferredWidth(visRect);		}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
裸体一区二区三区| 亚洲码国产岛国毛片在线| 日本sm残虐另类| 欧美电影免费观看高清完整版在线 | 日韩欧美色综合| 精品一区二区三区久久久| 久久久影视传媒| 国产91丝袜在线18| 亚洲激情自拍视频| 欧美人xxxx| 国产精品一二三四| 亚洲男女毛片无遮挡| 56国语精品自产拍在线观看| 九色|91porny| 国产精品久久久久7777按摩| 欧美亚洲综合另类| 久久精品国产久精国产爱| 国产精品天干天干在线综合| 91福利视频网站| 国产一区二区三区高清播放| 亚洲欧洲精品成人久久奇米网| 欧美在线视频日韩| 国产中文一区二区三区| 亚洲免费观看高清| 欧美成人一级视频| 91亚洲男人天堂| 久久精品免费观看| 亚洲三级久久久| 久久亚洲一区二区三区明星换脸| 97久久超碰国产精品| 日韩主播视频在线| 国产精品丝袜久久久久久app| 欧美性受极品xxxx喷水| 国产麻豆精品在线观看| 亚洲一级片在线观看| 久久久久久久久岛国免费| 欧美亚洲综合久久| 北条麻妃一区二区三区| 男男gaygay亚洲| 亚洲欧美日韩一区二区| 2023国产精品| 日韩一区二区免费电影| 91视频观看视频| 国产v综合v亚洲欧| 日本欧美加勒比视频| 亚洲色图另类专区| 国产欧美一区二区在线| 日韩一级完整毛片| 欧美色图片你懂的| 91捆绑美女网站| 成人伦理片在线| 国内精品免费**视频| 日韩中文字幕不卡| 亚洲国产日产av| 综合欧美亚洲日本| 国产精品视频一二三| 久久久综合精品| 精品国产免费一区二区三区香蕉| 欧美日韩视频在线观看一区二区三区| 丰满少妇在线播放bd日韩电影| 久久99久久久欧美国产| 三级欧美在线一区| 亚洲一区二区三区免费视频| 国产视频亚洲色图| 久久精品人人做| 久久众筹精品私拍模特| 日韩免费电影一区| 日韩网站在线看片你懂的| 欧美日韩精品高清| 欧美丰满少妇xxxxx高潮对白 | 欧美三级视频在线| 色诱视频网站一区| 色天天综合久久久久综合片| 97精品久久久午夜一区二区三区| 福利一区福利二区| 国产91在线观看丝袜| 国产乱码精品一区二区三 | 五月婷婷另类国产| 亚洲成人三级小说| 午夜精品成人在线视频| 首页欧美精品中文字幕| 日本中文一区二区三区| 日韩成人一级大片| 精品影视av免费| 国产精品影视网| www.成人在线| 91免费国产在线| 欧美视频一区在线| 日韩视频一区在线观看| 精品国产人成亚洲区| 国产欧美日韩麻豆91| 亚洲色欲色欲www| 亚洲国产成人av网| 久久99久久精品| 国产成人午夜高潮毛片| 91亚洲男人天堂| 337p亚洲精品色噜噜| 精品国产一区二区三区不卡| 国产午夜精品久久| 亚洲人妖av一区二区| 午夜影院久久久| 国产精品99久久久久| 一本色道久久综合亚洲91| 欧美日韩精品二区第二页| 精品福利二区三区| 国产精品麻豆欧美日韩ww| 一区二区免费看| 久久国产乱子精品免费女| 国产盗摄女厕一区二区三区| 91亚洲国产成人精品一区二区三| 欧美巨大另类极品videosbest | 91亚洲精品久久久蜜桃| 欧美福利视频一区| 国产日产欧美精品一区二区三区| 亚洲欧美另类久久久精品2019| 亚洲r级在线视频| 国产精品白丝av| 欧美日韩国产片| 国产片一区二区| 日韩在线一区二区三区| 国产精品888| 欧美精品一卡两卡| 亚洲欧洲99久久| 麻豆国产精品一区二区三区 | 欧美伦理影视网| 国产精品理论片在线观看| 日韩影院在线观看| 国产a精品视频| 91精品国产综合久久久蜜臀粉嫩| 国产精品美女久久福利网站| 日本欧美一区二区在线观看| 色综合天天综合网天天狠天天| 亚洲精品在线一区二区| 亚洲一区二区三区中文字幕| 风流少妇一区二区| 日韩女优av电影在线观看| 中文字幕一区二区三区在线不卡 | 99久久久国产精品| 欧美xxxxxxxx| 午夜视黄欧洲亚洲| 色狠狠av一区二区三区| 欧美激情综合五月色丁香| 日本伊人午夜精品| 在线视频一区二区免费| 亚洲丝袜另类动漫二区| 91麻豆免费视频| 国产精品女主播av| 国产美女视频91| 欧美成人一区二区三区片免费 | 国产日产精品一区| 激情另类小说区图片区视频区| 欧美日本韩国一区二区三区视频 | 国产精品久久久久9999吃药| 激情五月激情综合网| 日韩欧美国产一区在线观看| 亚洲国产精品欧美一二99| 色综合久久中文字幕| 最新日韩av在线| av在线不卡电影| 国产精品久久久久久久第一福利 | 亚州成人在线电影| 在线视频一区二区三区| 亚洲黄色尤物视频| 在线视频综合导航| 亚洲成人777| 欧美高清视频一二三区| 天天综合色天天综合| 欧美精品国产精品| 日韩精品久久理论片| 日韩一区二区三区视频在线观看| 麻豆国产精品官网| 日韩一级免费一区| 国产在线看一区| 国产视频视频一区| 成人av资源在线观看| 亚洲视频香蕉人妖| 欧美午夜精品久久久久久超碰| 亚洲午夜久久久久久久久电影网 | 亚洲午夜久久久久久久久久久| 欧美色图天堂网| 日韩1区2区日韩1区2区| 337p粉嫩大胆色噜噜噜噜亚洲| 精品无人码麻豆乱码1区2区| 久久久久9999亚洲精品| 99精品国产视频| 亚洲一区二区三区美女| 欧美一区二区在线免费播放| 久久99精品久久久久久久久久久久| 久久亚洲一级片| 91在线小视频| 午夜久久久久久久久| 久久综合久久综合亚洲| 成人在线一区二区三区| 亚洲精品免费视频| 91精品国产日韩91久久久久久| 国产一区二区三区综合| 日韩美女视频一区二区| 欧美电影一区二区三区| 国产乱码精品1区2区3区| 亚洲男人电影天堂|