glossytaskpaneui.java
来自「java实现浏览器等本地桌面的功能」· Java 代码 · 共 162 行
JAVA
162 行
/* * $Id: GlossyTaskPaneUI.java,v 1.4 2005/10/10 18:03:15 rbair Exp $ * * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, * Santa Clara, California 95054, U.S.A. All rights reserved. * * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */package org.jdesktop.swingx.plaf.misc;import java.awt.GradientPaint;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Paint;import java.awt.Rectangle;import java.awt.RenderingHints;import javax.swing.JComponent;import javax.swing.border.Border;import javax.swing.plaf.ComponentUI;import org.jdesktop.swingx.JXTaskPane;import org.jdesktop.swingx.plaf.basic.BasicTaskPaneUI;/** * Paints the JXTaskPane with a gradient in the title bar. * * @author <a href="mailto:fred@L2FProd.com">Frederic Lavigne</a> */public class GlossyTaskPaneUI extends BasicTaskPaneUI { public static ComponentUI createUI(JComponent c) { return new GlossyTaskPaneUI(); } protected Border createPaneBorder() { return new GlossyPaneBorder(); } /** * Overriden to paint the background of the component but keeping the rounded * corners. */ public void update(Graphics g, JComponent c) { if (c.isOpaque()) { g.setColor(c.getParent().getBackground()); g.fillRect(0, 0, c.getWidth(), c.getHeight()); g.setColor(c.getBackground()); g.fillRect(0, ROUND_HEIGHT, c.getWidth(), c.getHeight() - ROUND_HEIGHT); } paint(g, c); } /** * The border of the taskpane group paints the "text", the "icon", the * "expanded" status and the "special" type. * */ class GlossyPaneBorder extends PaneBorder { protected void paintTitleBackground(JXTaskPane group, Graphics g) { if (group.isSpecial()) { g.setColor(specialTitleBackground); g.fillRoundRect( 0, 0, group.getWidth(), ROUND_HEIGHT * 2, ROUND_HEIGHT, ROUND_HEIGHT); g.fillRect( 0, ROUND_HEIGHT, group.getWidth(), TITLE_HEIGHT - ROUND_HEIGHT); } else { Paint oldPaint = ((Graphics2D)g).getPaint(); GradientPaint gradient = new GradientPaint( 0f, 0f, //group.getWidth() / 2, titleBackgroundGradientStart, 0f, //group.getWidth(), TITLE_HEIGHT, titleBackgroundGradientEnd); ((Graphics2D)g).setRenderingHint( RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); ((Graphics2D)g).setRenderingHint( RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); ((Graphics2D)g).setRenderingHint( RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); ((Graphics2D)g).setPaint(gradient); g.fillRoundRect( 0, 0, group.getWidth(), ROUND_HEIGHT * 2, ROUND_HEIGHT, ROUND_HEIGHT); g.fillRect( 0, ROUND_HEIGHT, group.getWidth(), TITLE_HEIGHT - ROUND_HEIGHT); ((Graphics2D)g).setPaint(oldPaint); } Rectangle oldRect = g.getClipBounds(); g.setClip(0, 0, group.getWidth(), TITLE_HEIGHT); g.setColor(borderColor); g.drawRoundRect( 0, 0, group.getWidth() - 1, TITLE_HEIGHT + ROUND_HEIGHT, ROUND_HEIGHT, ROUND_HEIGHT); g.drawLine(0, TITLE_HEIGHT - 1, group.getWidth(), TITLE_HEIGHT - 1); g.setClip(oldRect); } protected void paintExpandedControls(JXTaskPane group, Graphics g, int x, int y, int width, int height) { ((Graphics2D)g).setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); paintOvalAroundControls(group, g, x, y, width, height); g.setColor(getPaintColor(group)); paintChevronControls(group, g, x, y, width, height); ((Graphics2D)g).setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); } @Override protected boolean isMouseOverBorder() { return true; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?