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

📄 xpwindowbuttonui.java

📁 Swing Windows XP 外观和感觉 BeanSoft 修改版, 2003年 原始的作者: XP 外观和感觉 by Stefan Krause - http://www.stefan
💻 JAVA
字号:
// Beta
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*   XP Look and Feel                                                           *
*                                                                              *
*  (C) Copyright 2002, by Stefan Krause                                        *
*                                                                              *
*                                                                              *
*   This library is free software; you can redistribute it and/or modify it    *
*   under the terms of the GNU Lesser General Public License as published by   *
*   the Free Software Foundation; either version 2.1 of the License, or (at    *
*   your option) any later version.                                            *
*                                                                              *
*   This library is distributed in the hope that it will be useful,            *
*   but WITHOUT ANY WARRANTY; without even the implied warranty of             *
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                       *
*   See the GNU Lesser General Public License for more details.                *
*                                                                              *
*   You should have received a copy of the GNU General Public License along    *
*   with this program; if not, write to the Free Software Foundation, Inc.,    *
*   59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.                    *
*                                                                              *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

package com.stefankrause.xplookandfeel;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;

import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.plaf.ComponentUI;

import com.stefankrause.xplookandfeel.skin.Skin;
import com.stefankrause.xplookandfeel.skin.SkinSimpleButtonIndexModel;

/**
 * A button placed in the title frame of a internal frame to enable
 * closing, iconifying and maximizing of the internal frame.
 */
public class XPWindowButtonUI extends XPButtonUI {
    
    int type;
    /** An icon to indicate that this button closes the windows */
    public final static int CLOSE=0;
    /** An icon to indicate that this button maximizes the windows */
    public final static int MAXIMIZE=1;
    /** An icon to indicate that this button minmizes / iconfies the windows */
    public final static int MINIMIZE=2;
	/** The only instance for this UI */
    private static final String[] files={"XPInternalFrameCloseButton.res","XPInternalFrameMaximizeButton.res","XPInternalFrameMinimizeButton.res"};
    /** the index model for the window buttons */
    private static SkinSimpleButtonIndexModel indexModel=new SkinSimpleButtonIndexModel(0,1,2,4); 
    
	static Skin skins[]=new Skin[3];
    
	public static ComponentUI createUI(JComponent c) {
        throw new IllegalStateException("Must not be used this way.");
	}
    
    XPWindowButtonUI(int type)
    {
        this.type=type;   
    }

    protected void paintFocus(Graphics g, AbstractButton b, Rectangle viewRect, Rectangle textRect, Rectangle iconRect) {
    }
	
    public void paint(Graphics g, JComponent c) {

        AbstractButton button = (AbstractButton) c;


        indexModel.setButton(button);
        int index=indexModel.getIndexForState();
        getSkin(type).draw(g, index,  button.getWidth(),  button.getHeight());

    }    
    
	protected static Skin getSkin(int type) {
        if (skins[type]==null)
        {
        
//            skins[type]=  new Skin("XPButton.res", 9, 4);
          skins[type]=  new Skin(files[type], 5, 2);
        }
            
//            
		return skins[type];	
	}
    
    /**
     * Creates a new Window Button UI for the specified type
     * @param type
     * @return XPWindowButtonUI
     */
	public static XPWindowButtonUI createButtonUIForType(int type) {
        return new XPWindowButtonUI(type);
	}
	/**
	 * @see javax.swing.plaf.basic.BasicButtonUI#getPreferredSize(javax.swing.JComponent)
	 */
	public Dimension getPreferredSize(JComponent c) {
		return new Dimension( getSkin(type).getHsize(), getSkin(type).getVsize() );
	}


}

⌨️ 快捷键说明

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