FileDocCategorySizeDatePackage
BLDComponent.javaAPI DocExample3195Tue Dec 12 18:59:00 GMT 2000None

BLDComponent

public class BLDComponent extends JComponent
A rectangle that has a fixed size.

Fields Summary
private Color
normalHue
private final Dimension
preferredSize
private String
name
private boolean
restrictMaximumSize
private boolean
printSize
Constructors Summary
public BLDComponent(float alignmentX, float hue, int shortSideSize, boolean restrictSize, boolean printSize, String name)

        this.name = name;
        this.restrictMaximumSize = restrictSize;
        this.printSize = printSize;
        setAlignmentX(alignmentX);
        normalHue = Color.getHSBColor(hue, 0.4f, 0.85f);
        preferredSize = new Dimension(shortSideSize*2, shortSideSize);

        MouseListener l = new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                int width = getWidth();
                float alignment = (float)(e.getX())
                                / (float)width;

                // Round to the nearest 1/10th.
                int tmp = Math.round(alignment * 10.0f); 
                alignment = (float)tmp / 10.0f;

                setAlignmentX(alignment);
                revalidate(); // this GUI needs relayout
                repaint();
            }
        };
        addMouseListener(l);
    
Methods Summary
public java.awt.DimensiongetMaximumSize()

        if (restrictMaximumSize) {
            return preferredSize;
        } else {
            return super.getMaximumSize();
        }
    
public java.awt.DimensiongetMinimumSize()

        return preferredSize;
    
public java.awt.DimensiongetPreferredSize()

        return preferredSize;
    
public booleanisOpaque()
Our BLDComponents are completely opaque, so we override this method to return true. This lets the painting system know that it doesn't need to paint any covered part of the components underneath this component. The end result is possibly improved painting performance.

        return true;
    
public voidpaint(java.awt.Graphics g)

        int width = getWidth();
        int height = getHeight();
        float alignmentX = getAlignmentX();

        g.setColor(normalHue);
        g.fill3DRect(0, 0, width, height, true);

        /* Draw a vertical white line at the alignment point.*/
        // XXX: This code is probably not the best.
        g.setColor(Color.white);
        int x = (int)(alignmentX * (float)width) - 1;
        g.drawLine(x, 0, x, height - 1);

        /* Say what the alignment point is. */
        g.setColor(Color.black);
        g.drawString(Float.toString(alignmentX), 3, height - 3);

        if (printSize) {
            System.out.println("BLDComponent " + name + ": size is " 
                               + width + "x" + height
                               + "; preferred size is " 
                               + getPreferredSize().width + "x"
                               + getPreferredSize().height);
        }
    
public voidsetSizeRestriction(boolean restrictSize)

        restrictMaximumSize = restrictSize;