1 /* 2 * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 package javax.swing.border; 26 27 import java.awt.Graphics; 28 import java.awt.Insets; 29 import java.awt.Rectangle; 30 import java.awt.Component; 31 32 /** 33 * Interface describing an object capable of rendering a border 34 * around the edges of a swing component. 35 * For examples of using borders see 36 * <a href="http://docs.oracle.com/javase/tutorial/uiswing/components/border.htmll">How to Use Borders</a>, 37 * a section in <em>The Java Tutorial.</em> 38 * <p> 39 * In the Swing component set, borders supercede Insets as the 40 * mechanism for creating a (decorated or plain) area around the 41 * edge of a component. 42 * <p> 43 * Usage Notes: 44 * <ul> 45 * <li>Use EmptyBorder to create a plain border (this mechanism 46 * replaces its predecessor, <code>setInsets</code>). 47 * <li>Use CompoundBorder to nest multiple border objects, creating 48 * a single, combined border. 49 * <li>Border instances are designed to be shared. Rather than creating 50 * a new border object using one of border classes, use the 51 * BorderFactory methods, which produces a shared instance of the 52 * common border types. 53 * <li>Additional border styles include BevelBorder, SoftBevelBorder, 54 * EtchedBorder, LineBorder, TitledBorder, and MatteBorder. 55 * <li>To create a new border class, subclass AbstractBorder. 56 * </ul> 57 * 58 * @author David Kloba 59 * @author Amy Fowler 60 * @see javax.swing.BorderFactory 61 * @see EmptyBorder 62 * @see CompoundBorder 63 */ 64 public interface Border 65 { 66 /** 67 * Paints the border for the specified component with the specified 68 * position and size. 69 * @param c the component for which this border is being painted 70 * @param g the paint graphics 71 * @param x the x position of the painted border 72 * @param y the y position of the painted border 73 * @param width the width of the painted border 74 * @param height the height of the painted border 75 */ 76 void paintBorder(Component c, Graphics g, int x, int y, int width, int height); 77 78 /** 79 * Returns the insets of the border. 80 * @param c the component for which this border insets value applies 81 */ 82 Insets getBorderInsets(Component c); 83 84 /** 85 * Returns whether or not the border is opaque. If the border 86 * is opaque, it is responsible for filling in it's own 87 * background when painting. 88 */ 89 boolean isBorderOpaque(); 90 }