basicarrowbutton.java
来自「FMJ(freedom media for java)是java视频开发的新选择」· Java 代码 · 共 207 行
JAVA
207 行
/* * @(#)BasicArrowButton.java 1.8 97/11/11 * * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved. * * This software is the confidential and proprietary information of Sun * Microsystems, Inc. ("Confidential Information"). You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Sun. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING * THIS SOFTWARE OR ITS DERIVATIVES. * */package net.sf.fmj.ejmf.toolkit.gui.controls.skins.ejmf;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import javax.swing.UIManager;/** * JButton object that draws a scaled Arrow in one of the cardinal directions. * * @version 1.8 11/11/97 * @author David Kloba */public class BasicArrowButton extends BasicControlButton{ protected int direction; public BasicArrowButton(int direction) { setDirection(direction); setBackground(UIManager.getColor("control")); } public int getDirection() { return direction; } public void setDirection(int dir) { direction = dir; } protected void paintIcon(Graphics g, int x, int y, int size, boolean isEnabled) { // paint is over-ridden from BasicControlButton // so paintIcon is no-op. } public void paint(Graphics g) { Color origColor; boolean isPressed, isEnabled; int w, h, size; w = getSize().width; h = getSize().height; origColor = g.getColor(); isPressed = getModel().isPressed(); isEnabled = isEnabled(); g.setColor(getBackground()); g.fillRect(1, 1, w-2, h-2); /// Draw the proper Border if (isPressed) { g.setColor(UIManager.getColor("controlShadow")); g.drawRect(0, 0, w-1, h-1); } else { // Using the background color set above g.drawLine(0, 0, 0, h-1); g.drawLine(1, 0, w-2, 0); g.setColor(UIManager.getColor("controlHighlight")); // inner 3D border g.drawLine(1, 1, 1, h-3); g.drawLine(2, 1, w-3, 1); g.setColor(UIManager.getColor("controlShadow")); // inner 3D border g.drawLine(1, h-2, w-2, h-2); g.drawLine(w-2, 1, w-2, h-3); g.setColor(UIManager.getColor("controlDkShadow")); // black drop shadow __| g.drawLine(0, h-1, w-1, h-1); g.drawLine(w-1, h-1, w-1, 0); } // If there's no room to draw arrow, bail if(h < 5 || w < 5) { g.setColor(origColor); return; } if (isPressed) { g.translate(1, 1); } // Draw the arrow size = Math.min((h - 4) / 3, (w - 4) / 3); size = Math.max(size, 2); paintTriangle(g, (w - size) / 2, (h - size) / 2, size, direction, isEnabled); // Reset the Graphics back to it's original settings if (isPressed) { g.translate(-1, -1); } g.setColor(origColor); } public Dimension getPreferredSize() { return new Dimension(16, 16); } public Dimension getMinimumSize() { return new Dimension(5, 5); } public Dimension getMaximumSize() { return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE); } public boolean isFocusTraversable() { return false; } public void paintTriangle(Graphics g, int x, int y, int size, int direction, boolean isEnabled) { Color oldColor = g.getColor(); int mid, i, j; j = 0; size = Math.max(size, 2); mid = size / 2; g.translate(x, y); if(isEnabled) g.setColor(UIManager.getColor("controlDkShadow")); else g.setColor(UIManager.getColor("controlShadow")); switch(direction) { case NORTH: for(i = 0; i < size; i++) { g.drawLine(mid-i, i, mid+i, i); } if(!isEnabled) { g.setColor(UIManager.getColor("controlHighlight")); g.drawLine(mid-i+2, i, mid+i, i); } break; case SOUTH: if(!isEnabled) { g.translate(1, 1); g.setColor(UIManager.getColor("controlHighlight")); for(i = size-1; i >= 0; i--) { g.drawLine(mid-i, j, mid+i, j); j++; } g.translate(-1, -1); g.setColor(UIManager.getColor("controlShadow")); } j = 0; for(i = size-1; i >= 0; i--) { g.drawLine(mid-i, j, mid+i, j); j++; } break; case WEST: for(i = 0; i < size; i++) { g.drawLine(i, mid-i, i, mid+i); } if(!isEnabled) { g.setColor(UIManager.getColor("controlHighlight")); g.drawLine(i, mid-i+2, i, mid+i); } break; case EAST: if(!isEnabled) { g.translate(1, 1); g.setColor(UIManager.getColor("controlHighlight")); for(i = size-1; i >= 0; i--) { g.drawLine(j, mid-i, j, mid+i); j++; } g.translate(-1, -1); g.setColor(UIManager.getColor("controlShadow")); } j = 0; for(i = size-1; i >= 0; i--) { g.drawLine(j, mid-i, j, mid+i); j++; } break; } g.translate(-x, -y); g.setColor(oldColor); } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?