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

📄 synthtreeui.java

📁 JAVA的一些源码 JAVA2 STANDARD EDITION DEVELOPMENT KIT 5.0
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		    if (isLeaf) {			isExpanded = hasBeenExpanded = false;                    }		    else {			isExpanded = treeState.getExpandedState(path);			hasBeenExpanded = tree.hasBeenExpanded(path);		    }		    bounds = treeState.getBounds(path, boundsBuffer);                    adjustCellBounds(tree, bounds, insets);		    // See if the vertical line to the parent has been drawn.		    parentPath = path.getParentPath();		    if (parentPath != null) {			if (drawingCache.get(parentPath) == null) {                            paintVerticalPartOfLeg(g, paintBounds, insets,                                                   parentPath);			    drawingCache.put(parentPath, Boolean.TRUE);			}			paintHorizontalPartOfLeg(g,                                                 paintBounds, insets, bounds,                                                 path, row, isExpanded,						 hasBeenExpanded, isLeaf);		    }		    else if (rootVisible && row == 0) {			paintHorizontalPartOfLeg(g,                                                 paintBounds, insets, bounds,                                                 path, row, isExpanded,						 hasBeenExpanded, isLeaf);		    }		    if (shouldPaintExpandControl(path, row, isExpanded,                                                 hasBeenExpanded, isLeaf)) {			paintExpandControl(g, paintBounds,                                           insets, bounds, path, row,                                           isExpanded, hasBeenExpanded,isLeaf);		    }		    if ((bounds.y + bounds.height) >= endY) {			done = true;                    }		}		else {		    done = true;		}		row++;	    }	}        cellContext.dispose();	// Empty out the renderer pane, allowing renderers to be gc'ed.	rendererPane.removeAll();    }    private void configureRenderer(SynthContext context) {        TreeCellRenderer renderer = tree.getCellRenderer();        if (renderer instanceof DefaultTreeCellRenderer) {            DefaultTreeCellRenderer r = (DefaultTreeCellRenderer)renderer;            SynthStyle style = context.getStyle();            context.setComponentState(ENABLED | SELECTED);            Color color = r.getTextSelectionColor();            if (color == null || (color instanceof UIResource)) {                r.setTextSelectionColor(style.getColor(                                     context, ColorType.TEXT_FOREGROUND));            }            color = r.getBackgroundSelectionColor();            if (color == null || (color instanceof UIResource)) {                r.setBackgroundSelectionColor(style.getColor(                                        context, ColorType.TEXT_BACKGROUND));            }            context.setComponentState(ENABLED);            color = r.getTextNonSelectionColor();            if (color == null || color instanceof UIResource) {                r.setTextNonSelectionColor(style.getColor(                                        context, ColorType.TEXT_FOREGROUND));            }            color = r.getBackgroundNonSelectionColor();            if (color instanceof UIResource) {                r.setBackgroundNonSelectionColor(style.getColor(                                  context, ColorType.TEXT_BACKGROUND));            }        }    }    protected void paintHorizontalPartOfLeg(Graphics g, Rectangle clipBounds,					    Insets insets, Rectangle bounds,					    TreePath path, int row,					    boolean isExpanded,					    boolean hasBeenExpanded, boolean					    isLeaf) {        if (drawHorizontalLines) {            super.paintHorizontalPartOfLeg(g, clipBounds, insets, bounds,                                           path, row, isExpanded,                                           hasBeenExpanded, isLeaf);        }    }    protected void paintHorizontalLine(Graphics g, JComponent c, int y,				      int left, int right) {        paintContext.getStyle().getGraphicsUtils(paintContext).drawLine(            paintContext, "Tree.horizontalLine", g, left, y, right, y);    }    protected void paintVerticalPartOfLeg(Graphics g,                                          Rectangle clipBounds, Insets insets,                                          TreePath path) {        if (drawVerticalLines) {            super.paintVerticalPartOfLeg(g, clipBounds, insets, path);        }    }    protected void paintVerticalLine(Graphics g, JComponent c, int x, int top,				    int bottom) {        paintContext.getStyle().getGraphicsUtils(paintContext).drawLine(            paintContext, "Tree.verticalLine", g, x, top, x, bottom);    }    protected void paintRow(TreeCellRenderer renderer,               DefaultTreeCellRenderer dtcr, SynthContext treeContext,               SynthContext cellContext, Graphics g, Rectangle clipBounds,               Insets insets, Rectangle bounds, Rectangle rowBounds,               TreePath path, int row, boolean isExpanded,               boolean hasBeenExpanded, boolean isLeaf) {	// Don't paint the renderer if editing this row.        boolean selected = tree.isRowSelected(row);        if (selected) {            cellContext.setComponentState(ENABLED | SELECTED);        }        else {            cellContext.setComponentState(ENABLED);        }        if (dtcr != null && (dtcr.getBorderSelectionColor() instanceof                             UIResource)) {            dtcr.setBorderSelectionColor(style.getColor(                                             cellContext, ColorType.FOCUS));        }        SynthLookAndFeel.updateSubregion(cellContext, g, rowBounds);        cellContext.getPainter().paintTreeCellBackground(cellContext, g,                    rowBounds.x, rowBounds.y, rowBounds.width,                    rowBounds.height);        cellContext.getPainter().paintTreeCellBorder(cellContext, g,                    rowBounds.x, rowBounds.y, rowBounds.width,                    rowBounds.height);	if (editingComponent != null && editingRow == row) {	    return;        }	int leadIndex;	if (tree.hasFocus()) {	    leadIndex = leadRow;	}	else {	    leadIndex = -1;        }	Component component = renderer.getTreeCellRendererComponent(                         tree, path.getLastPathComponent(),                         selected, isExpanded, isLeaf, row,                         (leadIndex == row));	rendererPane.paintComponent(g, component, tree, bounds.x, bounds.y,				    bounds.width, bounds.height, true);    }    protected void drawCentered(Component c, Graphics graphics, Icon icon,				int x, int y) {        int w = SynthIcon.getIconWidth(icon, paintContext);        int h = SynthIcon.getIconHeight(icon, paintContext);	SynthIcon.paintIcon(icon, paintContext, graphics, x - w/2, y - h/2, w,                            h);    }    public void propertyChange(PropertyChangeEvent event) {        if (SynthLookAndFeel.shouldUpdateStyle(event)) {            updateStyle((JTree)event.getSource());        }    }    protected int getRowX(int row, int depth) {        return super.getRowX(row, depth) + padding;    }    private class SynthTreeCellRenderer extends DefaultTreeCellRenderer                               implements UIResource {        SynthTreeCellRenderer() {        }        public String getName() {            return "Tree.cellRenderer";        }        public Component getTreeCellRendererComponent(JTree tree, Object value,                                                      boolean sel,                                                      boolean expanded,                                                      boolean leaf, int row,                                                      boolean hasFocus) {            if (!useTreeColors && (sel || hasFocus)) {                SynthLookAndFeel.setSelectedUI((SynthLabelUI)SynthLookAndFeel.                             getUIOfType(getUI(), SynthLabelUI.class),                                   sel, hasFocus, tree.isEnabled());            }            else {                SynthLookAndFeel.resetSelectedUI();            }            return super.getTreeCellRendererComponent(tree, value, sel,                                                      expanded, leaf, row, hasFocus);        }        public void paint(Graphics g) {            paintComponent(g);            if (hasFocus) {                SynthContext context = getContext(tree, Region.TREE_CELL);                if (context.getStyle() == null) {                    assert false: "SynthTreeCellRenderer is being used " +                        "outside of UI that created it";                    return;                }                int imageOffset = 0;                Icon currentI = getIcon();                if(currentI != null && getText() != null) {                    imageOffset = currentI.getIconWidth() +                                          Math.max(0, getIconTextGap() - 1);                }                if (selected) {                    context.setComponentState(ENABLED | SELECTED);                }                else {                    context.setComponentState(ENABLED);                }                if(getComponentOrientation().isLeftToRight()) {                    context.getPainter().paintTreeCellFocus(context, g,                            imageOffset, 0, getWidth() - imageOffset,                            getHeight());                }                else {                    context.getPainter().paintTreeCellFocus(context, g,                            0, 0, getWidth() - imageOffset, getHeight());                }                context.dispose();            }            SynthLookAndFeel.resetSelectedUI();        }    }    private static class SynthTreeCellEditor extends DefaultTreeCellEditor {        public SynthTreeCellEditor(JTree tree,                                   DefaultTreeCellRenderer renderer) {            super(tree, renderer);            setBorderSelectionColor(null);        }        protected TreeCellEditor createTreeCellEditor() {            JTextField tf = new JTextField() {                public String getName() {                    return "Tree.cellEditor";                }            };            DefaultCellEditor editor = new DefaultCellEditor(tf);            // One click to edit.            editor.setClickCountToStart(1);            return editor;        }    }    //    // BasicTreeUI directly uses expandIcon outside of the Synth methods.    // To get the correct context we return an instance of this that fetches    // the SynthContext as needed.    //    private class ExpandedIconWrapper extends SynthIcon {        public void paintIcon(SynthContext context, Graphics g, int x,                              int y, int w, int h) {            if (context == null) {                context = getContext(tree);                SynthIcon.paintIcon(expandedIcon, context, g, x, y, w, h);                context.dispose();            }            else {                SynthIcon.paintIcon(expandedIcon, context, g, x, y, w, h);            }        }        public int getIconWidth(SynthContext context) {            int width;            if (context == null) {                context = getContext(tree);                width = SynthIcon.getIconWidth(expandedIcon, context);                context.dispose();            }            else {                width = SynthIcon.getIconWidth(expandedIcon, context);            }            return width;        }        public int getIconHeight(SynthContext context) {            int height;            if (context == null) {                context = getContext(tree);                height = SynthIcon.getIconHeight(expandedIcon, context);                context.dispose();            }            else {                height = SynthIcon.getIconHeight(expandedIcon, context);            }            return height;        }    }}

⌨️ 快捷键说明

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