BLDComponentpublic 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.Dimension | getMaximumSize()
if (restrictMaximumSize) {
return preferredSize;
} else {
return super.getMaximumSize();
}
| public java.awt.Dimension | getMinimumSize()
return preferredSize;
| public java.awt.Dimension | getPreferredSize()
return preferredSize;
| public boolean | isOpaque()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 void | paint(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 void | setSizeRestriction(boolean restrictSize)
restrictMaximumSize = restrictSize;
|
|