class ArrowPanel extends JPanel { public static final int LEFT = 0, RIGHT = 1, UP = 2, DOWN = 3, UPLEFT = 4, UPRIGHT = 5, DOWNLEFT = 6, DOWNRIGHT = 7; private int direction; // What direction arrow points--one of the static variables above. private Color arrowColor = Color.green; // These three variables are the private int arrowSize = 17; // values that you control to private int extraSpace = 2; // control how the arrows look. public ArrowPanel(int direction) { this.direction = direction; setBackground(Color.black); } public void paintComponent(Graphics g) { super.paintComponent(g); int width = getSize().width, height = getSize().height, x = (width - arrowSize)/2, y = (height - arrowSize)/2; int X[] = {-1,-1,-1}, // These values are determined below, depending on what type of arrow to draw Y[] = {-1,-1,-1}; // but need default values that are off-screen. if (direction == LEFT) { X[0] = x+extraSpace; Y[0] = y + arrowSize/2; X[1] = x-extraSpace + arrowSize; Y[1] = y; X[2] = x-extraSpace + arrowSize; Y[2] = y + arrowSize; } else if (direction == RIGHT) { X[0] = x+extraSpace; Y[0] = y; X[1] = x+extraSpace; Y[1] = y + arrowSize; X[2] = x-extraSpace + arrowSize; Y[2] = y + arrowSize/2; } else if (direction == UP) { X[0] = x; Y[0] = y-extraSpace + arrowSize; X[1] = x + arrowSize/2; Y[1] = y+extraSpace; X[2] = x + arrowSize; Y[2] = y-extraSpace + arrowSize; } else if (direction == DOWN) { X[0] = x; Y[0] = y+extraSpace; X[1] = x + arrowSize/2; Y[1] = y-extraSpace + arrowSize; X[2] = x + arrowSize; Y[2] = y+extraSpace; } else if (direction == UPLEFT) { X[0] = x+extraSpace; Y[0] = y+extraSpace; X[1] = x+extraSpace; Y[1] = y-extraSpace + arrowSize; X[2] = x-extraSpace + arrowSize; Y[2] = y+extraSpace; } else if (direction == UPRIGHT) { X[0] = x+extraSpace; Y[0] = y+extraSpace; X[1] = x-extraSpace + arrowSize; Y[1] = y+extraSpace; X[2] = x-extraSpace + arrowSize; Y[2] = y-extraSpace +arrowSize; } else if (direction == DOWNLEFT) { X[0] = x+extraSpace; Y[0] = y+extraSpace; X[1] = x+extraSpace; Y[1] = y-extraSpace + arrowSize; X[2] = x-extraSpace+arrowSize; Y[2] = y-extraSpace + arrowSize; } else if (direction == DOWNRIGHT) { X[0] = x+extraSpace; Y[0] = y-extraSpace + arrowSize; X[1] = x-extraSpace + arrowSize; Y[1] = y+extraSpace; X[2] = x-extraSpace + arrowSize; Y[2] = y-extraSpace + arrowSize; } g.setColor(arrowColor); g.fillPolygon(X,Y,3); } // end method paint public Dimension getPreferredSize() { return (new Dimension(arrowSize+2*extraSpace, arrowSize+2*extraSpace)); } } // end class ArrowPanel