⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basictreeui.java

📁 JAVA 所有包
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	completeEditing();	updateDepthOffset();	if(treeState != null) {	    treeState.invalidateSizes();	    updateSize();	}    }    protected boolean getShowsRootHandles() {	return (tree != null) ? tree.getShowsRootHandles() : false;    }    /**     * Sets the cell editor.     */    protected void setCellEditor(TreeCellEditor editor) {	updateCellEditor();    }    protected TreeCellEditor getCellEditor() {	return (tree != null) ? tree.getCellEditor() : null;    }    /**     * Configures the receiver to allow, or not allow, editing.     */    protected void setEditable(boolean newValue) {	updateCellEditor();    }    protected boolean isEditable() {	return (tree != null) ? tree.isEditable() : false;    }    /**     * Resets the selection model. The appropriate listener are installed     * on the model.     */    protected void setSelectionModel(TreeSelectionModel newLSM) {	completeEditing();	if(selectionModelPropertyChangeListener != null &&	   treeSelectionModel != null)	    treeSelectionModel.removePropertyChangeListener		              (selectionModelPropertyChangeListener);	if(treeSelectionListener != null && treeSelectionModel != null)	    treeSelectionModel.removeTreeSelectionListener		               (treeSelectionListener);	treeSelectionModel = newLSM;	if(treeSelectionModel != null) {	    if(selectionModelPropertyChangeListener != null)		treeSelectionModel.addPropertyChangeListener		              (selectionModelPropertyChangeListener);	    if(treeSelectionListener != null)		treeSelectionModel.addTreeSelectionListener		                   (treeSelectionListener);	    if(treeState != null)		treeState.setSelectionModel(treeSelectionModel);	}	else if(treeState != null)	    treeState.setSelectionModel(null);	if(tree != null)	    tree.repaint();    }    protected TreeSelectionModel getSelectionModel() {	return treeSelectionModel;    }    //    // TreeUI methods    //    /**      * Returns the Rectangle enclosing the label portion that the      * last item in path will be drawn into.  Will return null if      * any component in path is currently valid.      */    public Rectangle getPathBounds(JTree tree, TreePath path) {	if(tree != null && treeState != null) {            return getPathBounds(path, tree.getInsets(), new Rectangle());	}	return null;    }    private Rectangle getPathBounds(TreePath path, Insets insets,                                     Rectangle bounds) {        bounds = treeState.getBounds(path, bounds);        if (bounds != null) {            if (leftToRight) {                bounds.x += insets.left;            } else {                bounds.x = tree.getWidth() - (bounds.x + bounds.width) -                        insets.right;            }            bounds.y += insets.top;        }        return bounds;    }    /**      * Returns the path for passed in row.  If row is not visible      * null is returned.      */    public TreePath getPathForRow(JTree tree, int row) {	return (treeState != null) ? treeState.getPathForRow(row) : null;    }    /**      * Returns the row that the last item identified in path is visible      * at.  Will return -1 if any of the elements in path are not      * currently visible.      */    public int getRowForPath(JTree tree, TreePath path) {	return (treeState != null) ? treeState.getRowForPath(path) : -1;    }    /**      * Returns the number of rows that are being displayed.      */    public int getRowCount(JTree tree) {	return (treeState != null) ? treeState.getRowCount() : 0;    }    /**      * Returns the path to the node that is closest to x,y.  If      * there is nothing currently visible this will return null, otherwise      * it'll always return a valid path.  If you need to test if the      * returned object is exactly at x, y you should get the bounds for      * the returned path and test x, y against that.      */    public TreePath getClosestPathForLocation(JTree tree, int x, int y) {	if(tree != null && treeState != null) {            // TreeState doesn't care about the x location, hence it isn't            // adjusted             y -= tree.getInsets().top;            return treeState.getPathClosestTo(x, y);	}	return null;    }    /**      * Returns true if the tree is being edited.  The item that is being      * edited can be returned by getEditingPath().      */    public boolean isEditing(JTree tree) {	return (editingComponent != null);    }    /**      * Stops the current editing session.  This has no effect if the      * tree isn't being edited.  Returns true if the editor allows the      * editing session to stop.      */    public boolean stopEditing(JTree tree) {	if(editingComponent != null && cellEditor.stopCellEditing()) {	    completeEditing(false, false, true);	    return true;	}	return false;    }    /**      * Cancels the current editing session.      */    public void cancelEditing(JTree tree) {	if(editingComponent != null) {	    completeEditing(false, true, false);	}    }    /**      * Selects the last item in path and tries to edit it.  Editing will      * fail if the CellEditor won't allow it for the selected item.      */    public void startEditingAtPath(JTree tree, TreePath path) {	tree.scrollPathToVisible(path);	if(path != null && tree.isVisible(path))	    startEditing(path, null);    }    /**     * Returns the path to the element that is being edited.     */    public TreePath getEditingPath(JTree tree) {	return editingPath;    }    //    // Install methods    //    public void installUI(JComponent c) {        if ( c == null ) {	    throw new NullPointerException( "null component passed to BasicTreeUI.installUI()" );        }	tree = (JTree)c;	prepareForUIInstall();	// Boilerplate install block	installDefaults();	installKeyboardActions();	installComponents();	installListeners();	completeUIInstall();    }    /**     * Invoked after the <code>tree</code> instance variable has been     * set, but before any defaults/listeners have been installed.     */    protected void prepareForUIInstall() {	drawingCache = new Hashtable<TreePath,Boolean>(7);	// Data member initializations	leftToRight = BasicGraphicsUtils.isLeftToRight(tree);	stopEditingInCompleteEditing = true;	lastSelectedRow = -1;	leadRow = -1;	preferredSize = new Dimension();	largeModel = tree.isLargeModel();	if(getRowHeight() <= 0)	    largeModel = false;	setModel(tree.getModel());    }    /**     * Invoked from installUI after all the defaults/listeners have been     * installed.     */    protected void completeUIInstall() {	// Custom install code	this.setShowsRootHandles(tree.getShowsRootHandles());	updateRenderer();	updateDepthOffset();	setSelectionModel(tree.getSelectionModel());	// Create, if necessary, the TreeState instance.	treeState = createLayoutCache();	configureLayoutCache();	updateSize();    }    protected void installDefaults() {	if(tree.getBackground() == null ||	   tree.getBackground() instanceof UIResource) {	    tree.setBackground(UIManager.getColor("Tree.background"));	} 	if(getHashColor() == null || getHashColor() instanceof UIResource) {	    setHashColor(UIManager.getColor("Tree.hash"));	}	if (tree.getFont() == null || tree.getFont() instanceof UIResource)	    tree.setFont( UIManager.getFont("Tree.font") );        // JTree's original row height is 16.  To correctly display the        // contents on Linux we should have set it to 18, Windows 19 and        // Solaris 20.  As these values vary so much it's too hard to        // be backward compatable and try to update the row height, we're        // therefor NOT going to adjust the row height based on font.  If the        // developer changes the font, it's there responsibility to update        // the row height.	setExpandedIcon( (Icon)UIManager.get( "Tree.expandedIcon" ) );	setCollapsedIcon( (Icon)UIManager.get( "Tree.collapsedIcon" ) );	setLeftChildIndent(((Integer)UIManager.get("Tree.leftChildIndent")).			   intValue());	setRightChildIndent(((Integer)UIManager.get("Tree.rightChildIndent")).			   intValue());	LookAndFeel.installProperty(tree, "rowHeight",				    UIManager.get("Tree.rowHeight"));        largeModel = (tree.isLargeModel() && tree.getRowHeight() > 0);	Object scrollsOnExpand = UIManager.get("Tree.scrollsOnExpand");	if (scrollsOnExpand != null) {	    LookAndFeel.installProperty(tree, "scrollsOnExpand", scrollsOnExpand);	}	paintLines = UIManager.getBoolean("Tree.paintLines");	lineTypeDashed = UIManager.getBoolean("Tree.lineTypeDashed");	 	Long l = (Long)UIManager.get("Tree.timeFactor"); 	timeFactor = (l!=null) ? l.longValue() : 1000L;                Object showsRootHandles = UIManager.get("Tree.showsRootHandles");        if (showsRootHandles != null) {            LookAndFeel.installProperty(tree,                     JTree.SHOWS_ROOT_HANDLES_PROPERTY, showsRootHandles);        }    }    protected void installListeners() {        if ( (propertyChangeListener = createPropertyChangeListener())	     != null ) {	    tree.addPropertyChangeListener(propertyChangeListener);	}        if ( (mouseListener = createMouseListener()) != null ) {	    tree.addMouseListener(mouseListener);	    if (mouseListener instanceof MouseMotionListener) {		tree.addMouseMotionListener((MouseMotionListener)mouseListener);	    }	}        if ((focusListener = createFocusListener()) != null ) {	    tree.addFocusListener(focusListener);	}        if ((keyListener = createKeyListener()) != null) {	    tree.addKeyListener(keyListener);	}	if((treeExpansionListener = createTreeExpansionListener()) != null) {	    tree.addTreeExpansionListener(treeExpansionListener);	}	if((treeModelListener = createTreeModelListener()) != null &&	   treeModel != null) {	    treeModel.addTreeModelListener(treeModelListener);	}	if((selectionModelPropertyChangeListener =	    createSelectionModelPropertyChangeListener()) != null &&	   treeSelectionModel != null) {	    treeSelectionModel.addPropertyChangeListener		(selectionModelPropertyChangeListener);	}	if((treeSelectionListener = createTreeSelectionListener()) != null &&	   treeSelectionModel != null) {	    treeSelectionModel.addTreeSelectionListener(treeSelectionListener);	}	TransferHandler th = tree.getTransferHandler();	if (th == null || th instanceof UIResource) {	    tree.setTransferHandler(defaultTransferHandler);	}        LookAndFeel.installProperty(tree, "opaque", Boolean.TRUE);    }    protected void installKeyboardActions() {	InputMap km = getInputMap(JComponent.				  WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);	SwingUtilities.replaceUIInputMap(tree, JComponent.					 WHEN_ANCESTOR_OF_FOCUSED_COMPONENT,					 km);	km = getInputMap(JComponent.WHEN_FOCUSED);	SwingUtilities.replaceUIInputMap(tree, JComponent.WHEN_FOCUSED, km);        LazyActionMap.installLazyActionMap(tree, BasicTreeUI.class,                                           "Tree.actionMap");    }    InputMap getInputMap(int condition) {	if (condition == JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) {	    return (InputMap)DefaultLookup.get(tree, this,                                               "Tree.ancestorInputMap");	}	else if (condition == JComponent.WHEN_FOCUSED) {	    InputMap keyMap = (InputMap)DefaultLookup.get(tree, this,                                                      "Tree.focusInputMap");	    InputMap rtlKeyMap;	    if (tree.getComponentOrientation().isLeftToRight() ||		  ((rtlKeyMap = (InputMap)DefaultLookup.get(tree, this,                  "Tree.focusInputMap.RightToLeft")) == null)) {		return keyMap;	    } else {		rtlKeyMap.setParent(keyMap);		return rtlKeyMap;	    }	}	return null;    }    /**     * Intalls the subcomponents of the tree, which is the renderer pane.     */    protected void installComponents() {	if ((rendererPane = createCellRendererPane()) != null) {	    tree.add( rendererPane );	}    }    //    // Create methods.    //    /**     * Creates an instance of NodeDimensions that is able to determine     * the size of a given node in the tree.     */    protected AbstractLayoutCache.NodeDimensions createNodeDimensions() {	return new NodeDimensionsHandler();    }    /**     * Creates a listener that is responsible that updates the UI based on     * how the tree changes.     */    protected PropertyChangeListener createPropertyChangeListener() {        return getHandler();    }    private Handler getHandler() {        if (handler == null) {            handler = new Handler();        }        return handler;    }    /**     * Creates the listener responsible for updating the selection based on     * mouse events.     */    protected MouseListener createMouseListener() {        return getHandler();    }    /**     * Creates a listener that is responsible for updating the display     * when focus is lost/gained.     */    protected FocusListener createFocusListener() {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -