public void print(PrintStream ps) {
        int n= fWidths.size();
        for (int y= 0; y < fRows; y++) {
            for (int x= 0; x < n; x++) {
                Integer w= (Integer) fWidths.get(Integer.toString(x));
                int ww= w.intValue();
                String s= getCell(x, y);
                if (s == null)
                    s= ""; //$NON-NLS-1$
                
                if (x > 0)
                    for (int g= 0; g < fGap; g++)
                        ps.print(' ');
   
                int www= ww-s.length();
                String align= (String) fAlignment.get(x + "/" + y); //$NON-NLS-1$
                if (LEFT.equalsIgnoreCase(align))
                    ps.print(s);
                for (int l= 0; l < www; l++)
                    ps.print(' ');
                if (RIGHT.equalsIgnoreCase(align))
                    ps.print(s);
            }
            ps.println();
        }
    }