UIManager.put("focusRing",customColor);
*/
public static Color getFocusRingColor() {
Object obj = UIManager.getColor("focusRing");
if(obj instanceof Color)
return (Color)obj;
return new Color(64,113,167);
}
/** Paints 3 different strokes around a shape to indicate focus.
* The widest stroke is the most transparent, so this achieves a nice
* "glow" effect.
* The catch is that you have to render this underneath the shape, * and the shape should be filled completely. * * @param g the graphics to paint to * @param shape the shape to outline * @param biggestStroke the widest stroke to use. */ public static void paintFocus(Graphics2D g,Shape shape,int biggestStroke) { Color focusColor = getFocusRingColor(); Color[] focusArray = new Color[] { new Color(focusColor.getRed(), focusColor.getGreen(), focusColor.getBlue(),255), new Color(focusColor.getRed(), focusColor.getGreen(), focusColor.getBlue(),170), new Color(focusColor.getRed(), focusColor.getGreen(), focusColor.getBlue(),110) }; g.setStroke(new BasicStroke(biggestStroke)); g.setColor(focusArray[2]); g.draw(shape); g.setStroke(new BasicStroke(biggestStroke-1)); g.setColor(focusArray[1]); g.draw(shape); g.setStroke(new BasicStroke(biggestStroke-2)); g.setColor(focusArray[0]); g.draw(shape); g.setStroke(new BasicStroke(1)); } /** Uses translucent shades of white and black to draw highlights * and shadows around a rectangle, and then frames the rectangle * with a shade of gray (120). *
This should be called to add a finishing touch on top of
* existing graphics.
* @param g the graphics to paint to.
* @param r the rectangle to paint.
*/
public static void drawBevel(Graphics g,Rectangle r) {
drawColors(blacks,g, r.x, r.y+r.height, r.x+r.width, r.y+r.height, SwingConstants.SOUTH);
drawColors(blacks,g, r.x+r.width, r.y, r.x+r.width, r.y+r.height, SwingConstants.EAST);
drawColors(whites,g, r.x, r.y, r.x+r.width, r.y, SwingConstants.NORTH);
drawColors(whites,g, r.x, r.y, r.x, r.y+r.height, SwingConstants.WEST);
g.setColor(new Color(120, 120, 120));
g.drawRect(r.x, r.y, r.width, r.height);
}
private static void drawColors(Color[] colors,Graphics g,int x1,int y1,int x2,int y2,int direction) {
for(int a = 0; a