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

📄 testganttrolloverbutton.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
字号:
package net.sourceforge.ganttproject.gui;/** * This class is from jedit.org * RolloverButton.java - Class for buttons that implement rollovers * :tabSize=8:indentSize=8:noTabs=false: * :folding=explicit:collapseFolds=1: * * Copyright (C) 2002 Kris Kopicki * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program 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 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. */import java.awt.AlphaComposite;import java.awt.EventQueue;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.Action;import javax.swing.Icon;import javax.swing.JButton;import javax.swing.SwingConstants;import javax.swing.border.EtchedBorder;import net.sourceforge.ganttproject.action.RolloverAction;/** * Special button for tests on TaskPropertiesBeans */public class TestGanttRolloverButton extends JButton {    protected Icon _iconOn = null;    protected Icon _iconOff = null;    private boolean isIconHidden;        private Icon myIcon;        private int myAutoRepeatMilliseconds;    public TestGanttRolloverButton(Action action) {        this();        setAction(action);        Icon smallIcon = (Icon) action.getValue(Action.SMALL_ICON);        if (smallIcon != null) {            setIcon(smallIcon);            _iconOff = smallIcon;            myIcon = smallIcon;        }        if (action instanceof RolloverAction) {            _iconOn = ((RolloverAction) action).getIconOnMouseOver();        }    }    public void setAutoRepeatMousePressedEvent(int milliseconds) {        myAutoRepeatMilliseconds = milliseconds;    }    /**     * Setup the border (invisible initially)     */    public TestGanttRolloverButton() {        setBorder(new EtchedBorder());        setBorderPainted(false);        setMargin(new Insets(0, 0, 0, 0));        setRequestFocusEnabled(false);        addMouseListener(new MouseOverHandler());        addMouseListener(new AutoRepeatHandler());        setHorizontalTextPosition(SwingConstants.CENTER);        setVerticalTextPosition(SwingConstants.BOTTOM);    }    /**     * Setup the border (invisible initially)     */    public TestGanttRolloverButton(Icon icon) {        this();        setIcon(icon);        _iconOn = icon;        myIcon = icon;    }    /**     * Setup the border (invisible initially)     */    private TestGanttRolloverButton(Icon iconOn, Icon iconOff) {        this();        setIcon(iconOff);        _iconOn = iconOn;        _iconOff = iconOff;    }    public void setIconHidden(boolean isHidden) {        if (isHidden) {            setDefaultIcon(null);        }        else {            setDefaultIcon(myIcon);        }    }        public void setTextHidden(boolean isHidden) {        if (isHidden) {            setText("");        }        else {            Action action = getAction();            if (action!=null) {                setText(String.valueOf(action.getValue(Action.NAME)));            }        }    };        /**     * Setup the border (invisible initially)     */    public TestGanttRolloverButton(Icon icon, String text) {        this();        setIcon(icon);        _iconOn = icon;        setText(text);    }    public void setIcon(Icon icon) {        Action a = getAction();        if (a != null) {            // a.putValue(Action.SMALL_ICON,icon);            _iconOn = icon;        }        super.setIcon(icon);    }    public void setIcon(Icon iconOn, Icon iconOff) {        setIcon(iconOff);        _iconOn = iconOn;        _iconOff = iconOff;    }    public void setDefaultIcon(Icon iconOn) {        setIcon(iconOn);        _iconOn = iconOn;    }    public boolean isOpaque() {        return false;    }    public void setEnabled(boolean b) {        super.setEnabled(b);        setBorderPainted(false);        repaint();    }    public void paint(Graphics g) {        if (isEnabled()) {            super.paint(g);        } else {            Graphics2D g2 = (Graphics2D) g;            g2.setComposite(c);            super.paint(g2);        }    }    private static AlphaComposite c = AlphaComposite.getInstance(            AlphaComposite.SRC_OVER, 0.5f);    /**     * Make the border visible/invisible on rollovers     */    class MouseOverHandler extends MouseAdapter {        public void mouseEntered(MouseEvent e) {            if (isEnabled()) {                setBorderPainted(true);                setIcon(_iconOn);            }        }        public void mouseExited(MouseEvent e) {            setBorderPainted(false);            if (getAction() instanceof RolloverAction)                setIcon(((RolloverAction) getAction()).getIconOnMouseOver());            else if (_iconOff != null)                setIcon(_iconOff);        }    }    class AutoRepeatHandler extends MouseAdapter {        private Worker myWorker;        public void mousePressed(MouseEvent e) {            if (myAutoRepeatMilliseconds > 0) {                myWorker = new Worker(e);                myWorker.start();            }        }        public void mouseReleased(MouseEvent e) {            if (myWorker != null) {                myWorker.interrupt();                myWorker = null;            }        }    }    class Worker extends Thread {        private ActionEvent myEvent;        Worker(MouseEvent e) {            myEvent = new ActionEvent(this, ActionEvent.ACTION_PERFORMED,                    getActionCommand(), EventQueue.getMostRecentEventTime(), e                            .getModifiers());            ;        }        public void run() {            while (true) {                try {                    Thread.sleep(myAutoRepeatMilliseconds);                } catch (InterruptedException e) {                    break;                }                if (isInterrupted()) {                    break;                }                getAction().actionPerformed(myEvent);            }        }    }}

⌨️ 快捷键说明

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