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

📄 gradientpanel.java

📁 JAVA图形特效,详细介绍SWING等的效果开发
💻 JAVA
字号:
/* * Copyright (c) 2007, Romain Guy * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * *   * Redistributions of source code must retain the above copyright *     notice, this list of conditions and the following disclaimer. *   * Redistributions in binary form must reproduce the above *     copyright notice, this list of conditions and the following *     disclaimer in the documentation and/or other materials provided *     with the distribution. *   * Neither the name of the TimingFramework project nor the names of its *     contributors may be used to endorse or promote products derived *     from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */import java.awt.BorderLayout;import java.awt.Color;import java.awt.GradientPaint;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.LayoutManager;import java.awt.Rectangle;import java.awt.Shape;import java.awt.event.ComponentEvent;import java.awt.event.ComponentListener;import java.awt.geom.Rectangle2D;import java.awt.image.BufferedImage;import javax.swing.JPanel;public class GradientPanel extends JPanel {    protected BufferedImage gradientImage;    protected Color gradientStart = new Color(204, 249, 124);    protected Color gradientEnd = new Color(174, 222, 94);    public GradientPanel() {        this(new BorderLayout());    }    public GradientPanel(LayoutManager layout) {        super(layout);        addComponentListener(new GradientCacheManager());    }    @Override    protected void paintComponent(Graphics g) {        createImageCache();        if (gradientImage != null) {            g.drawImage(gradientImage, 0, 0, getWidth(), getHeight(), null);        }    }    protected void createImageCache() {        int width = 2;        int height = getHeight();        if (width == 0 || height == 0) {            return;        }        if (gradientImage == null ||            width != gradientImage.getWidth() ||             height != gradientImage.getHeight()) {            gradientImage = new BufferedImage(width, height,                                              BufferedImage.TYPE_INT_RGB);            Graphics2D g2 = gradientImage.createGraphics();            GradientPaint painter = new GradientPaint(0, 0, gradientEnd,                                                      0, height / 2, gradientStart);            g2.setPaint(painter);            Rectangle2D rect = new Rectangle2D.Double(0, 0, width, height / 2.0);            g2.fill(rect);            painter = new GradientPaint(0, height / 2, gradientStart,                                        0, height, gradientEnd);            g2.setPaint(painter);            rect = new Rectangle2D.Double(0, (height / 2.0) - 1.0, width, height);            g2.fill(rect);            g2.dispose();        }    }    private void disposeImageCache() {        synchronized (gradientImage) {            gradientImage.flush();            gradientImage = null;        }    }    private class GradientCacheManager implements ComponentListener {        public void componentResized(ComponentEvent e) {        }        public void componentMoved(ComponentEvent e) {        }        public void componentShown(ComponentEvent e) {        }        public void componentHidden(ComponentEvent e) {            disposeImageCache();        }    }}

⌨️ 快捷键说明

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