windowstogglebuttonui.java

来自「JAVA的一些源码 JAVA2 STANDARD EDITION DEVELO」· Java 代码 · 共 160 行

JAVA
160
字号
/* * @(#)WindowsToggleButtonUI.java	1.31 06/08/25 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.java.swing.plaf.windows;import javax.swing.plaf.basic.*;import javax.swing.border.*;import javax.swing.plaf.*;import javax.swing.*;import java.awt.*;import java.beans.PropertyChangeEvent;/** * A Windows toggle button. * <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.  A future release of Swing will provide support for * long term persistence. * * @version 1.31 08/25/06 * @author Jeff Dinkins */public class WindowsToggleButtonUI extends BasicToggleButtonUI{    protected static int dashedRectGapX;    protected static int dashedRectGapY;    protected static int dashedRectGapWidth;    protected static int dashedRectGapHeight;    protected Color focusColor;        private final static WindowsToggleButtonUI windowsToggleButtonUI = new WindowsToggleButtonUI();    private boolean defaults_initialized = false;        public static ComponentUI createUI(JComponent b) {	return windowsToggleButtonUI;    }    // ********************************    //            Defaults    // ********************************    protected void installDefaults(AbstractButton b) {	super.installDefaults(b);	if(!defaults_initialized) {	    String pp = getPropertyPrefix();	    dashedRectGapX = ((Integer)UIManager.get("Button.dashedRectGapX")).intValue();	    dashedRectGapY = ((Integer)UIManager.get("Button.dashedRectGapY")).intValue();	    dashedRectGapWidth = ((Integer)UIManager.get("Button.dashedRectGapWidth")).intValue();	    dashedRectGapHeight = ((Integer)UIManager.get("Button.dashedRectGapHeight")).intValue();	    focusColor = UIManager.getColor(pp + "focus");	    defaults_initialized = true;	}	XPStyle xp = XPStyle.getXP();	if (xp != null) {	    b.setBorder(xp.getBorder(b, WindowsButtonUI.getXPButtonType(b)));	    LookAndFeel.installProperty(b, "opaque", Boolean.FALSE);	    LookAndFeel.installProperty(b, "rolloverEnabled", Boolean.TRUE);	}    }    protected void uninstallDefaults(AbstractButton b) {	super.uninstallDefaults(b);	defaults_initialized = false;    }        protected Color getFocusColor() {	return focusColor;    }            // ********************************    //         Paint Methods    // ********************************    protected void paintButtonPressed(Graphics g, AbstractButton b) {        if (XPStyle.getXP() == null &&	    b.isContentAreaFilled() && 	    !(b.getBorder() instanceof UIResource)) {	    // This is a special case in which the toggle button in the	    // Rollover JToolBar will render the button in a pressed state	    Color oldColor = g.getColor();            int w = b.getWidth();	    int h = b.getHeight();	    UIDefaults table = UIManager.getLookAndFeelDefaults();	    Color shade = table.getColor("ToggleButton.shadow");	    Component p = b.getParent();	    if (p != null && p.getBackground().equals(shade)) {		shade = table.getColor("ToggleButton.darkShadow");	    }	    g.setColor(shade);	    g.drawRect(0, 0, w-1, h-1);	    g.setColor(table.getColor("ToggleButton.highlight"));	    g.drawLine(w-1, 0, w-1, h-1);	    g.drawLine(0, h-1, w-1, h-1);	    g.setColor(oldColor);	}    }    public void paint(Graphics g, JComponent c) {	if (XPStyle.getXP() != null) {	    WindowsButtonUI.paintXPButtonBackground(g, c);	}	super.paint(g, c);    }    /**     * Overridden method to render the text without the mnemonic     */    protected void paintText(Graphics g, AbstractButton b, Rectangle textRect, String text) {	WindowsGraphicsUtils.paintText(g, b, textRect, text, getTextShiftOffset());    }     protected void paintFocus(Graphics g, AbstractButton b,			      Rectangle viewRect, Rectangle textRect, Rectangle iconRect) {	if (b.getParent() instanceof JToolBar) {	    // Windows doesn't draw the focus rect for buttons in a toolbar.	    return;	}	g.setColor(getFocusColor());	BasicGraphicsUtils.drawDashedRect(g, dashedRectGapX, dashedRectGapY,					  b.getWidth() - dashedRectGapWidth,					  b.getHeight() - dashedRectGapHeight);    }    // ********************************    //          Layout Methods    // ********************************    public Dimension getPreferredSize(JComponent c) {	Dimension d = super.getPreferredSize(c);	/* Ensure that the width and height of the button is odd,	 * to allow for the focus line if focus is painted	 */        AbstractButton b = (AbstractButton)c;	if (d != null && b.isFocusPainted()) {	    if(d.width % 2 == 0) { d.width += 1; }	    if(d.height % 2 == 0) { d.height += 1; }	}	return d;    }}

⌨️ 快捷键说明

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