很简单,我以前写过一个,我找找!

解决方案 »

  1.   

    import java.text.*;class StringAlign extends Format{
    public static final int JUST_LEFT = '1';
    public static final int JUST_CENTRE = 'c';
    public static final int JUST_CENTER = JUST_CENTRE;
    public static final int JUST_RIGHT = 'r';

    private int just;
    private int maxChars;

    public StringAlign(int maxChars,int just) {
    switch(just) {
    case JUST_LEFT:
    case JUST_CENTRE:
    case JUST_RIGHT:
    this.just = just;
    break;
    default:
    throw new IllegalArgumentException("invalid justification arg.");
    }
    if(maxChars < 0) {
    throw new IllegalArgumentException("maxChars must be positive");

    }
    this.maxChars = maxChars;
    }
    public StringBuffer format(Object obj,StringBuffer where,FieldPosition ignore) {
    String s = (String)obj;
    String wanted = s.substring(0,Math.min(s.length(),maxChars));
    if(wanted.length() > maxChars) {
    where.append(wanted);
    }
    else switch(just) {
    case JUST_RIGHT:
    pad(where,maxChars - wanted.length());
    where.append(wanted);
    break;
    case JUST_CENTRE:
    int startPos = where.length();
    pad(where,(maxChars - wanted.length())/2);
    where.append(wanted);
    pad(where,(maxChars - wanted.length())/2);
    pad(where,maxChars - (where.length() - startPos));
    break;
    case JUST_LEFT:
    where.append(wanted);
    pad(where,maxChars - wanted.length());
    break;

    }
    return where;

    }
    protected final void pad(StringBuffer to, int howMany) {
    for(int i = 0;i < howMany;i++)
    to.append(' ');
    }
    String format(String s) {
    return format(s,new StringBuffer(),null).toString();

    }
    public Object parseObject(String source,ParsePosition pos) {
    return source;
    }
    }