public void paintComponent(Graphics g) {
			Rectangle visible = getVisibleRect();
			int height = ARROW_LENGTH + icons[0].getIconHeight();
			int max = icons.length - 1 - visible.y / height;
			int min = icons.length - 1 - (visible.y + visible.height) / height;
			try {
				min = Math.max(min, 0);
				g = g.create();
				g.translate(0, height * (icons.length - 1 - max));
				for (int i = max; i >= min; i--) {
					drawArrow(g);
					drawIcon(g, icons[i]);
				}
				g.dispose();
			} catch (Throwable e) {
				System.err.println(e);
			}
		}