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

📄 arrowbutton.java

📁 这个项目是为Java平台提供一个灵活的日历组件(Ok)
💻 JAVA
字号:
/* *  NachoCalendar * * Project Info:  http://nachocalendar.sf.net * * 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 Lesser General Public License * along with this library; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * [Java is a trademark or registered trademark of Sun Microsystems, Inc. * in the United States and other countries.] * * Changes * ------- * * ArrowButton.java * * Created on August 13, 2004, 11:44 AM */package net.sf.nachocalendar.components;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import javax.swing.JButton;/** JButton showing an arrow. * @author Ignacio Merani */public class ArrowButton extends JButton {    /** Default size. */    private int defaultsize = 16;    /** Direction for the arrow. */    private int direction;    /** Creates a new instance of ArrowButton.     * @param direction direction of the arrow     */    public ArrowButton(int direction) {        super();        this.direction = direction;    }        /**      * Invoked by Swing to draw components.     * Applications should not invoke <code>paint</code> directly,     * but should instead use the <code>repaint</code> method to     * schedule the component for redrawing.     * <p>     * This method actually delegates the work of painting to three     * protected methods: <code>paintComponent</code>,     * <code>paintBorder</code>,     * and <code>paintChildren</code>.  They're called in the order     * listed to ensure that children appear on top of component itself.     * Generally speaking, the component and its children should not     * paint in the insets area allocated to the border. Subclasses can     * just override this method, as always.  A subclass that just     * wants to specialize the UI (look and feel) delegate's     * <code>paint</code> method should just override     * <code>paintComponent</code>.     *     * @param g  the <code>Graphics</code> context in which to paint     */    public void paint(Graphics g) {        super.paint(g);        int mid, i, j, x, y;        int w, h, size;                w = getSize().width;        h = getSize().height;        size = Math.min((h - 4) / 3, (w - 4) / 3);        size = Math.max(size, 2);        x = (w - size) / 2;        y = (h - size) / 2;        j = 0;        size = Math.max(size, 2);        mid = (size / 2) - 1;                g.translate(x, y);        if (isEnabled()) {            g.setColor(getForeground());        } else g.setColor(Color.gray);                switch (direction) {            case NORTH:                for (i = 0; i < size; i++) {                    g.drawLine(mid - i, i, mid + i, i);                }                break;            case SOUTH:                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);                }                break;            case EAST:                j = 0;                for (i = size - 1; i >= 0; i--) {                    g.drawLine(j, mid - i, j, mid + i);                    j++;                }                break;            default:                        }    }        /**      * If the <code>preferredSize</code> has been set to a     * non-<code>null</code> value just returns it.     * If the UI delegate's <code>getPreferredSize</code>     * method returns a non <code>null</code> value then return that;     * otherwise defer to the component's layout manager.     *     * @return the value of the <code>preferredSize</code> property     */    public Dimension getPreferredSize() {        return new Dimension(defaultsize, defaultsize);    }        /**      * Getter for property direction.     * @return Value of property direction.     */    public int getDirection() {        return this.direction;    }        /**      * Setter for property direction.     * @param direction New value of property direction.     */    public void setDirection(int direction) {        this.direction = direction;    }    }

⌨️ 快捷键说明

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