sclass JFastLogView_noWrap extends JComponent implements Scrollable { LS lines = syncList(); public Dimension getPreferredScrollableViewportSize() { ret getPreferredSize(); } public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { return 20; } public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { ret (direction == SwingConstants.HORIZONTAL ? visibleRect.width : visibleRect.height)*5/6; } public bool getScrollableTracksViewportWidth() { false; } public bool getScrollableTracksViewportHeight() { false; } public void paint(Graphics g) { int w = getWidth(), h = getHeight(); g.setColor(Color.white); g.fillRect(0, 0, w, h); g.setColor(Color.black); FontMetrics fm = getFontMetrics(getFont()); int y = fm.getAscent(), fh = fm.getHeight(); for i over lines: { S s = get(lines, i); g.drawString(s, 0, y); y += fh; } } public Dimension getPreferredSize() { FontMetrics fm = getFontMetrics(getFont()); int fh = fm.getHeight(); ret new Dimension(500 /* TODO */, fh*l(lines)); } // API void setLines(Collection lines) { this.lines = asSyncList(lines); _revalidate(this); } }