BasicArrowButtonpublic class BasicArrowButton extends JButton implements SwingConstantsJButton object that draws a scaled Arrow in one of the cardinal directions.
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}. |
Fields Summary |
---|
protected int | direction | private Color | shadow | private Color | darkShadow | private Color | highlight |
Constructors Summary |
---|
public BasicArrowButton(int direction, Color background, Color shadow, Color darkShadow, Color highlight)
super();
setRequestFocusEnabled(false);
setDirection(direction);
setBackground(background);
this.shadow = shadow;
this.darkShadow = darkShadow;
this.highlight = highlight;
| public BasicArrowButton(int direction)
this(direction, UIManager.getColor("control"), UIManager.getColor("controlShadow"),
UIManager.getColor("controlDkShadow"), UIManager.getColor("controlLtHighlight"));
|
Methods Summary |
---|
public int | getDirection() return direction;
| public java.awt.Dimension | getMaximumSize()
return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
| public java.awt.Dimension | getMinimumSize()
return new Dimension(5, 5);
| public java.awt.Dimension | getPreferredSize()
return new Dimension(16, 16);
| public boolean | isFocusTraversable()
return false;
| public void | paint(java.awt.Graphics g)
Color origColor;
boolean isPressed, isEnabled;
int w, h, size;
w = getSize().width;
h = getSize().height;
origColor = g.getColor();
isPressed = getModel().isPressed();
isEnabled = isEnabled();
g.setColor(getBackground());
g.fillRect(1, 1, w-2, h-2);
/// Draw the proper Border
if (getBorder() != null && !(getBorder() instanceof UIResource)) {
paintBorder(g);
} else if (isPressed) {
g.setColor(shadow);
g.drawRect(0, 0, w-1, h-1);
} else {
// Using the background color set above
g.drawLine(0, 0, 0, h-1);
g.drawLine(1, 0, w-2, 0);
g.setColor(highlight); // inner 3D border
g.drawLine(1, 1, 1, h-3);
g.drawLine(2, 1, w-3, 1);
g.setColor(shadow); // inner 3D border
g.drawLine(1, h-2, w-2, h-2);
g.drawLine(w-2, 1, w-2, h-3);
g.setColor(darkShadow); // black drop shadow __|
g.drawLine(0, h-1, w-1, h-1);
g.drawLine(w-1, h-1, w-1, 0);
}
// If there's no room to draw arrow, bail
if(h < 5 || w < 5) {
g.setColor(origColor);
return;
}
if (isPressed) {
g.translate(1, 1);
}
// Draw the arrow
size = Math.min((h - 4) / 3, (w - 4) / 3);
size = Math.max(size, 2);
paintTriangle(g, (w - size) / 2, (h - size) / 2,
size, direction, isEnabled);
// Reset the Graphics back to it's original settings
if (isPressed) {
g.translate(-1, -1);
}
g.setColor(origColor);
| public void | paintTriangle(java.awt.Graphics g, int x, int y, int size, int direction, boolean isEnabled)
Color oldColor = g.getColor();
int mid, i, j;
j = 0;
size = Math.max(size, 2);
mid = (size / 2) - 1;
g.translate(x, y);
if(isEnabled)
g.setColor(darkShadow);
else
g.setColor(shadow);
switch(direction) {
case NORTH:
for(i = 0; i < size; i++) {
g.drawLine(mid-i, i, mid+i, i);
}
if(!isEnabled) {
g.setColor(highlight);
g.drawLine(mid-i+2, i, mid+i, i);
}
break;
case SOUTH:
if(!isEnabled) {
g.translate(1, 1);
g.setColor(highlight);
for(i = size-1; i >= 0; i--) {
g.drawLine(mid-i, j, mid+i, j);
j++;
}
g.translate(-1, -1);
g.setColor(shadow);
}
j = 0;
for(i = size-1; i >= 0; i--) {
g.drawLine(mid-i, j, mid+i, j);
j++;
}
break;
case WEST:
for(i = 0; i < size; i++) {
g.drawLine(i, mid-i, i, mid+i);
}
if(!isEnabled) {
g.setColor(highlight);
g.drawLine(i, mid-i+2, i, mid+i);
}
break;
case EAST:
if(!isEnabled) {
g.translate(1, 1);
g.setColor(highlight);
for(i = size-1; i >= 0; i--) {
g.drawLine(j, mid-i, j, mid+i);
j++;
}
g.translate(-1, -1);
g.setColor(shadow);
}
j = 0;
for(i = size-1; i >= 0; i--) {
g.drawLine(j, mid-i, j, mid+i);
j++;
}
break;
}
g.translate(-x, -y);
g.setColor(oldColor);
| public void | setDirection(int dir) direction = dir;
|
|