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

📄 skinmenuitem.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.skin;

import java.awt.Graphics;


/**
 * The only case the Skin currently can't handle is a skin for a JMenuItem.
 * @see com.stefankrause.xplookandfeel.skin.Skin
 */
public class SkinMenuItem extends SkinElement {
	private int leftOffset, leftRolloverOffset, rightOffset, rightRolloverOffset;

	private int hsize, vsize;
	private int roundedSize;
	private boolean useDefaultButton = false;
	private boolean useSelectedButton = false;	
	private boolean doneAllCalculations = false;

	public SkinMenuItem(String fileName, int leftOffset, int leftRolloverOffset, int rightOffset, int rightRolloverOffset,
					 int roundedSize) {
		super(fileName,false);
		this.leftOffset = leftOffset;
		this.leftRolloverOffset = leftRolloverOffset;
		this.rightOffset = rightOffset;
		this.rightRolloverOffset = rightRolloverOffset;
		this.roundedSize = roundedSize;
		calculateSizes();
	}	

	public void draw(Graphics g, boolean isEnabled, boolean isSelected, boolean isPushed, boolean isRollover, int pSizeX, int leftSize, int sizeY) {
		int offsetL = 0, offsetR = 0;

		if (isSelected) {
			offsetL = leftRolloverOffset;
			offsetR = rightRolloverOffset;
		} else {
			offsetL = leftOffset;
			offsetR = rightOffset;			
		}
			
		offsetL = hsize * offsetL;
		offsetR = hsize * offsetR;

		// Left Side
		
		{
			int offset=offsetL;
			int sizeX=leftSize;
			if (roundedSize>0) {
				// lo
				g.drawImage(getImage(), 0, 0, roundedSize, roundedSize, offset + 0, 0, offset + roundedSize, roundedSize, null);
		
				// mo
				g.drawImage(getImage(), roundedSize, 0, sizeX - roundedSize, roundedSize, offset + roundedSize, 0, offset + hsize - roundedSize, roundedSize, null);
		
				// ro
				g.drawImage(getImage(), sizeX - roundedSize, 0, sizeX, roundedSize, offset + hsize - roundedSize, 0, offset + hsize, roundedSize, null);
		
				// lm
				g.drawImage(getImage(), 0, roundedSize, roundedSize, sizeY - roundedSize, offset + 0, roundedSize, offset + roundedSize, vsize - roundedSize, null);
	
				// rm
				g.drawImage(getImage(), sizeX - roundedSize, roundedSize, sizeX, sizeY - roundedSize, offset + hsize - roundedSize, roundedSize, offset + hsize, vsize - roundedSize, null);
		
				// lu
				g.drawImage(getImage(), 0, sizeY - roundedSize, roundedSize, sizeY, offset + 0, vsize - roundedSize, offset + roundedSize, vsize, null);
		
				// mu
				g.drawImage(getImage(), roundedSize, sizeY - roundedSize, sizeX - roundedSize, sizeY, offset + roundedSize, vsize - roundedSize, offset + hsize - roundedSize, vsize, null);
		
				// ru
				g.drawImage(getImage(), sizeX - roundedSize, sizeY - roundedSize, sizeX, sizeY, offset + hsize - roundedSize, vsize - roundedSize, offset + hsize, vsize, null);
			}
			g.drawImage(getImage(), roundedSize, roundedSize, sizeX - roundedSize, sizeY - roundedSize, offset + roundedSize, roundedSize, offset + hsize - roundedSize, vsize - roundedSize, null);
		}
		// Right Side

		{
			int offset=offsetR;
			int sizeX=pSizeX-leftSize;
			g.translate(leftSize,0);
			if (roundedSize>0) {
				// lo
				g.drawImage(getImage(), 0, 0, roundedSize, roundedSize, offset + 0, 0, offset + roundedSize, roundedSize, null);
		
				// mo
				g.drawImage(getImage(), roundedSize, 0, sizeX - roundedSize, roundedSize, offset + roundedSize, 0, offset + hsize - roundedSize, roundedSize, null);
		
				// ro
				g.drawImage(getImage(), sizeX - roundedSize, 0, sizeX, roundedSize, offset + hsize - roundedSize, 0, offset + hsize, roundedSize, null);
		
				// lm
				g.drawImage(getImage(), 0, roundedSize, roundedSize, sizeY - roundedSize, offset + 0, roundedSize, offset + roundedSize, vsize - roundedSize, null);
	
				// rm
				g.drawImage(getImage(), sizeX - roundedSize, roundedSize, sizeX, sizeY - roundedSize, offset + hsize - roundedSize, roundedSize, offset + hsize, vsize - roundedSize, null);
		
				// lu
				g.drawImage(getImage(), 0, sizeY - roundedSize, roundedSize, sizeY, offset + 0, vsize - roundedSize, offset + roundedSize, vsize, null);
		
				// mu
				g.drawImage(getImage(), roundedSize, sizeY - roundedSize, sizeX - roundedSize, sizeY, offset + roundedSize, vsize - roundedSize, offset + hsize - roundedSize, vsize, null);
		
				// ru
				g.drawImage(getImage(), sizeX - roundedSize, sizeY - roundedSize, sizeX, sizeY, offset + hsize - roundedSize, vsize - roundedSize, offset + hsize, vsize, null);
			}
			g.drawImage(getImage(), roundedSize, roundedSize, sizeX - roundedSize, sizeY - roundedSize, offset + roundedSize, roundedSize, offset + hsize - roundedSize, vsize - roundedSize, null);

			g.translate(-leftSize,0);
		}
	}
	
	public int getHsize() {
		if (!doneAllCalculations) {
			calculateSizes();
			doneAllCalculations=true;
		}
		return hsize;
	}

	public int getVsize() {
		if (!doneAllCalculations) {
			calculateSizes();
			doneAllCalculations=true;
		}
		return vsize;
	}

	protected void calculateSizes() {
		int maxOffset = 0;
		if (leftOffset > maxOffset)
			maxOffset = leftOffset;
		if (leftRolloverOffset > maxOffset)
			maxOffset = leftRolloverOffset;
		if (rightOffset > maxOffset)
			maxOffset = rightOffset;
		if (rightRolloverOffset > maxOffset)
			maxOffset = rightRolloverOffset;

		hsize = (getImage().getWidth(null)) / (maxOffset + 1);
		vsize = getImage().getHeight(null);
	}
}

⌨️ 快捷键说明

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