@Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        
        double rotation = 0;
        if (orientation == ARROW_NORTH) rotation = 0;
        else if (orientation == ARROW_NORTHEAST) rotation = Math.PI / 4;
        else if (orientation == ARROW_EAST) rotation = Math.PI / 2;
        else if (orientation == ARROW_SOUTHEAST) rotation = Math.PI / 1.5;
        else if (orientation == ARROW_SOUTH) rotation = Math.PI;
        else if (orientation == ARROW_SOUTHWEST) rotation = Math.PI / -1.5;
        else if (orientation == ARROW_WEST) rotation = Math.PI / -2;
        else if (orientation == ARROW_NORTHWEST) rotation = Math.PI / -4;
        
        g2.rotate(rotation, (double)arrow.getSize().width / 2, (double)arrow.getSize().height / 2);
        g2.drawImage(bi, 0, 0, arrow.getSize().width, arrow.getSize().height, null);
    }