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

📄 metalsplitpanedivider.java

📁 Mobile 应用程序使用 Java Micro Edition (Java ME) 平台
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)MetalSplitPaneDivider.java	1.22 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package javax.swing.plaf.metal;import java.awt.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.plaf.basic.*;/** * Metal's split pane divider * <p> * <strong>Warning:</strong> * Serialized objects of this class will not be compatible with * future Swing releases. The current serialization support is * appropriate for short term storage or RMI between applications running * the same version of Swing.  As of 1.4, support for long term storage * of all JavaBeans<sup><font size="-2">TM</font></sup> * has been added to the <code>java.beans</code> package. * Please see {@link java.beans.XMLEncoder}. * * @version 1.22 11/17/05 * @author Steve Wilson * @author Ralph kar */class MetalSplitPaneDivider extends BasicSplitPaneDivider{    private MetalBumps bumps = new MetalBumps(10, 10,                 MetalLookAndFeel.getControlHighlight(),                 MetalLookAndFeel.getControlDarkShadow(),                 MetalLookAndFeel.getControl() );    private MetalBumps focusBumps = new MetalBumps(10, 10,                 MetalLookAndFeel.getPrimaryControlHighlight(),                 MetalLookAndFeel.getPrimaryControlDarkShadow(),                 UIManager.getColor("SplitPane.dividerFocusColor"));    private int inset = 2;    private Color controlColor = MetalLookAndFeel.getControl();    private Color primaryControlColor = UIManager.getColor(                                "SplitPane.dividerFocusColor");    public MetalSplitPaneDivider(BasicSplitPaneUI ui) {        super(ui);    }    public void paint(Graphics g) {	MetalBumps usedBumps;	if (splitPane.hasFocus()) {	    usedBumps = focusBumps;	    g.setColor(primaryControlColor);	}	else {	    usedBumps = bumps;	    g.setColor(controlColor);	}	Rectangle clip = g.getClipBounds();	Insets insets = getInsets();	g.fillRect(clip.x, clip.y, clip.width, clip.height);        Dimension  size = getSize();        size.width -= inset * 2;        size.height -= inset * 2;	int drawX = inset;	int drawY = inset;	if (insets != null) {	    size.width -= (insets.left + insets.right);	    size.height -= (insets.top + insets.bottom);	    drawX += insets.left;	    drawY += insets.top;	}        usedBumps.setBumpArea(size);        usedBumps.paintIcon(this, g, drawX, drawY);        super.paint(g);    }    /**     * Creates and return an instance of JButton that can be used to     * collapse the left component in the metal split pane.     */    protected JButton createLeftOneTouchButton() {        JButton b = new JButton() {            // Sprite buffer for the arrow image of the left button            int[][]     buffer = {{0, 0, 0, 2, 2, 0, 0, 0, 0},                                  {0, 0, 2, 1, 1, 1, 0, 0, 0},                                  {0, 2, 1, 1, 1, 1, 1, 0, 0},                                  {2, 1, 1, 1, 1, 1, 1, 1, 0},                                  {0, 3, 3, 3, 3, 3, 3, 3, 3}};            public void setBorder(Border b) {            }            public void paint(Graphics g) {                JSplitPane splitPane = getSplitPaneFromSuper();                if(splitPane != null) {                    int         oneTouchSize = getOneTouchSizeFromSuper();                    int         orientation = getOrientationFromSuper();                    int         blockSize = Math.min(getDividerSize(),                                                     oneTouchSize);                    // Initialize the color array                    Color[]     colors = {                            this.getBackground(),                            MetalLookAndFeel.getPrimaryControlDarkShadow(),                            MetalLookAndFeel.getPrimaryControlInfo(),                            MetalLookAndFeel.getPrimaryControlHighlight()};                    // Fill the background first ...                    g.setColor(this.getBackground());                    if (isOpaque()) {                        g.fillRect(0, 0, this.getWidth(),                                   this.getHeight());                    }                    // ... then draw the arrow.                    if (getModel().isPressed()) {                            // Adjust color mapping for pressed button state                            colors[1] = colors[2];                    }                    if(orientation == JSplitPane.VERTICAL_SPLIT) {                            // Draw the image for a vertical split                            for (int i=1; i<=buffer[0].length; i++) {                                    for (int j=1; j<blockSize; j++) {                                            if (buffer[j-1][i-1] == 0) {                                                    continue;                                            }                                            else {                                                g.setColor(                                                    colors[buffer[j-1][i-1]]);                                            }                                            g.drawLine(i, j, i, j);                                    }                            }                    }                    else {                            // Draw the image for a horizontal split                            // by simply swaping the i and j axis.                            // Except the drawLine() call this code is                            // identical to the code block above. This was done                            // in order to remove the additional orientation                            // check for each pixel.                            for (int i=1; i<=buffer[0].length; i++) {                                    for (int j=1; j<blockSize; j++) {                                            if (buffer[j-1][i-1] == 0) {                                                    // Nothing needs                                                    // to be drawn                                                    continue;                                            }                                            else {                                                    // Set the color from the                                                    // color map                                                    g.setColor(                                                    colors[buffer[j-1][i-1]]);                                            }                                            // Draw a pixel                                            g.drawLine(j, i, j, i);                                    }                            }                    }                }            }	    // Don't want the button to participate in focus traversable.	    public boolean isFocusTraversable() {		return false;	    }        };        b.setRequestFocusEnabled(false);	b.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));        b.setFocusPainted(false);        b.setBorderPainted(false);        maybeMakeButtonOpaque(b);        return b;    }    /**     * If necessary <code>c</code> is made opaque.     */    private void maybeMakeButtonOpaque(JComponent c) {        Object opaque = UIManager.get("SplitPane.oneTouchButtonsOpaque");        if (opaque != null) {            c.setOpaque(((Boolean)opaque).booleanValue());        }    }    /**     * Creates and return an instance of JButton that can be used to     * collapse the right component in the metal split pane.     */    protected JButton createRightOneTouchButton() {        JButton b = new JButton() {            // Sprite buffer for the arrow image of the right button            int[][]     buffer = {{2, 2, 2, 2, 2, 2, 2, 2},                                  {0, 1, 1, 1, 1, 1, 1, 3},

⌨️ 快捷键说明

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