FileDocCategorySizeDatePackage
CompoundBorder.javaAPI DocJava SE 5 API5001Fri Aug 26 14:58:00 BST 2005javax.swing.border

CompoundBorder

public class CompoundBorder extends AbstractBorder
A composite Border class used to compose two Border objects into a single border by nesting an inside Border object within the insets of an outside Border object. For example, this class may be used to add blank margin space to a component with an existing decorative border:

Border border = comp.getBorder();
Border margin = new EmptyBorder(10,10,10,10);
comp.setBorder(new CompoundBorder(border, margin));

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package. Please see {@link java.beans.XMLEncoder}.

version
1.20 12/19/03
author
David Kloba

Fields Summary
protected Border
outsideBorder
protected Border
insideBorder
Constructors Summary
public CompoundBorder()
Creates a compound border with null outside and inside borders.

	this.outsideBorder = null;
	this.insideBorder = null;
    
public CompoundBorder(Border outsideBorder, Border insideBorder)
Creates a compound border with the specified outside and inside borders. Either border may be null.

param
outsideBorder the outside border
param
insideBorder the inside border to be nested

	this.outsideBorder = outsideBorder;
	this.insideBorder = insideBorder;
    
Methods Summary
public java.awt.InsetsgetBorderInsets(java.awt.Component c, java.awt.Insets insets)
Reinitialize the insets parameter with this Border's current Insets.

param
c the component for which this border insets value applies
param
insets the object to be reinitialized

	Insets  nextInsets;

	insets.top = insets.left = insets.right = insets.bottom = 0;
	if(outsideBorder != null) {
	    nextInsets = outsideBorder.getBorderInsets(c);
	    insets.top += nextInsets.top;
	    insets.left += nextInsets.left;
	    insets.right += nextInsets.right;
	    insets.bottom += nextInsets.bottom;
	}
	if(insideBorder != null) {
	    nextInsets = insideBorder.getBorderInsets(c);
	    insets.top += nextInsets.top;
	    insets.left += nextInsets.left;
	    insets.right += nextInsets.right;
	    insets.bottom += nextInsets.bottom;
	}
        return insets;
    
public java.awt.InsetsgetBorderInsets(java.awt.Component c)
Returns the insets of the composite border by adding the insets of the outside border to the insets of the inside border.

param
c the component for which this border insets value applies

	return getBorderInsets(c, new Insets(0,0,0,0));
    
public javax.swing.border.BordergetInsideBorder()
Returns the inside border object.

        return insideBorder;
    
public javax.swing.border.BordergetOutsideBorder()
Returns the outside border object.

        return outsideBorder;
    
public booleanisBorderOpaque()
Returns whether or not this compound border is opaque. Returns true if both the inside and outside borders are non-null and opaque; returns false otherwise.

 
	return (outsideBorder == null || outsideBorder.isBorderOpaque()) &&
               (insideBorder == null || insideBorder.isBorderOpaque()); 
    
public voidpaintBorder(java.awt.Component c, java.awt.Graphics g, int x, int y, int width, int height)
Paints the compound border by painting the outside border with the specified position and size and then painting the inside border at the specified position and size offset by the insets of the outside border.

param
c the component for which this border is being painted
param
g the paint graphics
param
x the x position of the painted border
param
y the y position of the painted border
param
width the width of the painted border
param
height the height of the painted border

	Insets  nextInsets;
	int px, py, pw, ph;

	px = x;
	py = y;
	pw = width;
	ph = height;

	if(outsideBorder != null) {
	    outsideBorder.paintBorder(c, g, px, py, pw, ph);		

	    nextInsets = outsideBorder.getBorderInsets(c);
	    px += nextInsets.left;
	    py += nextInsets.top;
	    pw = pw - nextInsets.right - nextInsets.left;
	    ph = ph - nextInsets.bottom - nextInsets.top;
	}
	if(insideBorder != null) 
  	    insideBorder.paintBorder(c, g, px, py, pw, ph);