📄 buttonborderfactory.java
字号:
/*
* @(#)BorderFactory.java 1.25 01/12/03
*
* Copyright 2002 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package flow.graph.gui.tools;
import java.awt.Color;
import java.awt.Font;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.border.*;
/**
* Factory class for vending standard <code>Border</code> objects. Wherever
* possible, this factory will hand out references to shared
* <code>Border</code> instances.
* For further information and examples see
* <a href="http://java.sun.com/docs/books/tutorial/uiswing/misc/border.html">How
to Use Borders</a>,
* a section in <em>The Java Tutorial</em>.
*
* @version 1.25 12/03/01
* @author David Kloba
*/
public class ButtonBorderFactory
{
/** Don't let anyone instantiate this class */
private ButtonBorderFactory() {
}
//// LineBorder ///////////////////////////////////////////////////////////////
/**
* Creates a line border withe the specified color.
*
* @param color a <code>Color</code> to use for the line
* @return the <code>Border</code> object
*/
public static Border createLineBorder(Color color) {
return new LineBorder(color, 1);
}
/**
* Creates a line border with the specified color
* and width. The width applies to all four sides of the
* border. To specify widths individually for the top,
* bottom, left, and right, use
* {@link #createMatteBorder(int,int,int,int,Color)}.
*
* @param color a <code>Color</code> to use for the line
* @param thickness an integer specifying the width in pixels
* @return the <code>Border</code> object
*/
public static Border createLineBorder(Color color, int thickness) {
return new LineBorder(color, thickness);
}
// public static Border createLineBorder(Color color, int thickness,
// boolean drawRounded) {
// return new JLineBorder(color, thickness, drawRounded);
// }
//// BevelBorder /////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
static final Border sharedRaisedBevel = new BevelBorder(BevelBorder.RAISED);
static final Border sharedLoweredBevel = new BevelBorder(BevelBorder.LOWERED);
/**
* Creates a border with a raised beveled edge, using
* brighter shades of the component's current background color
* for highlighting, and darker shading for shadows.
* (In a raised border, highlights are on top and shadows
* are underneath.)
*
* @return the <code>Border</code> object
*/
public static Border createRaisedBevelBorder() {
return createSharedBevel(BevelBorder.RAISED);
}
/**
* Creates a border with a lowered beveled edge, using
* brighter shades of the component's current background color
* for highlighting, and darker shading for shadows.
* (In a lowered border, shadows are on top and highlights
* are underneath.)
*
* @return the <code>Border</code> object
*/
public static Border createLoweredBevelBorder() {
return createSharedBevel(BevelBorder.LOWERED);
}
/**
* Creates a beveled border of the specified type, using
* brighter shades of the component's current background color
* for highlighting, and darker shading for shadows.
* (In a lowered border, shadows are on top and highlights
* are underneath.)
*
* @param type an integer specifying either
* <code>BevelBorder.LOWERED</code> or
* <code>BevelBorder.RAISED</code>
* @return the <code>Border</code> object
*/
public static Border createBevelBorder(int type) {
return createSharedBevel(type);
}
/**
* Creates a beveled border of the specified type, using
* the specified highlighting and shadowing. The outer
* edge of the highlighted area uses a brighter shade of
* the highlight color. The inner edge of the shadow area
* uses a brighter shade of the shadow color.
*
* @param type an integer specifying either
* <code>BevelBorder.LOWERED</code> or
* <code>BevelBorder.RAISED</code>
* @param highlight a <code>Color</code> object for highlights
* @param shadow a <code>Color</code> object for shadows
* @return the <code>Border</code> object
*/
public static Border createBevelBorder(int type, Color highlight, Color shadow) {
return new ButtonBorder(type, highlight, shadow);
}
public static Border createRoundBorder(int type, Color highlight, Color shadow) {
return new RoundButtonBorder(type, highlight, shadow);
}
/**
* Creates a beveled border of the specified type, using
* the specified colors for the inner and outer highlight
* and shadow areas.
*
* @param type an integer specifying either
* <code>BevelBorder.LOWERED</code> or
* <code>BevelBorder.RAISED</code>
* @param highlightOuter a <code>Color</code> object for the
* outer edge of the highlight area
* @param highlightInner a <code>Color</code> object for the
* inner edge of the highlight area
* @param shadowOuter a <code>Color</code> object for the
* outer edge of the shadow area
* @param shadowInner a <code>Color</code> object for the
* inner edge of the shadow area
* @return the <code>Border</code> object
*/
public static Border createBevelBorder(int type,
Color highlightOuter, Color highlightInner,
Color shadowOuter, Color shadowInner) {
return new ButtonBorder(type, highlightOuter, highlightInner,
shadowOuter, shadowInner);
}
static Border createSharedBevel(int type) {
if(type == ButtonBorder.RAISED) {
return sharedRaisedBevel;
} else if(type == ButtonBorder.LOWERED) {
return sharedLoweredBevel;
}
return null;
}
//// EtchedBorder ///////////////////////////////////////////////////////////
static final Border sharedEtchedBorder = new EtchedBorder();
private static Border sharedRaisedEtchedBorder;
/**
* Creates a border with an "etched" look using
* the component's current background color for
* highlighting and shading.
*
* @return the <code>Border</code> object
*/
public static Border createEtchedBorder() {
return sharedEtchedBorder;
}
/**
* Creates a border with an "etched" look using
* the specified highlighting and shading colors.
*
* @param highlight a <code>Color</code> object for the border highlights
* @param shadow a <code>Color</code> object for the border shadows
* @return the <code>Border</code> object
*/
public static Border createEtchedBorder(Color highlight, Color shadow) {
return new EtchedBorder(highlight, shadow);
}
/**
* Creates a border with an "etched" look using
* the component's current background color for
* highlighting and shading.
*
* @param type one of <code>EtchedBorder.RAISED</code>, or
* <code>EtchedBorder.LOWERED</code>
* @return the <code>Border</code> object
* @exception IllegalArgumentException if type is not either
* <code>EtchedBorder.RAISED</code> or
* <code>EtchedBorder.LOWERED</code>
* @since 1.3
*/
public static Border createEtchedBorder(int type) {
switch (type) {
case EtchedBorder.RAISED:
if (sharedRaisedEtchedBorder == null) {
sharedRaisedEtchedBorder = new EtchedBorder
(EtchedBorder.RAISED);
}
return sharedRaisedEtchedBorder;
case EtchedBorder.LOWERED:
return sharedEtchedBorder;
default:
throw new IllegalArgumentException("type must be one of EtchedBorder.RAISED or EtchedBorder.LOWERED");
}
}
/**
* Creates a border with an "etched" look using
* the specified highlighting and shading colors.
*
* @param type one of <code>EtchedBorder.RAISED</code>, or
* <code>EtchedBorder.LOWERED</code>
* @param highlight a <code>Color</code> object for the border highlights
* @param shadow a <code>Color</code> object for the border shadows
* @return the <code>Border</code> object
* @since 1.3
*/
public static Border createEtchedBorder(int type, Color highlight,
Color shadow) {
return new EtchedBorder(type, highlight, shadow);
}
//// TitledBorder ////////////////////////////////////////////////////////////
/**
* Creates a new title border specifying the text of the title, using
* the default border (etched), using the default text position
* (sitting on the top
* line) and default justification (leading) and using the default
* font and text color determined by the current look and feel.
*
* @param title a <code>String</code> containing the text of the title
* @return the <code>TitledBorder</code> object
*/
public static TitledBorder createTitledBorder(String title) {
return new TitledBorder(title);
}
/**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -