package extensions.awt; import java.awt.*; import java.util.*; import extensions.util.*; /** * Create a multi-line label. * * @see java.awt.Label * @version 1.0.2 * @author John Webster Small */ public class LabelPanel extends Panel { /** Left aligns message text. */ public static final int LEFT = Label.LEFT; /** Centers message text. */ public static final int CENTER = Label.CENTER; /** Right aligns message text. */ public static final int RIGHT = Label.RIGHT; /** Default line delimiters. */ public static final String delimDefault = "\n"; /** Horizonal pixel gap between label and container. */ public static int hgap = 10; /** Vertical pixel gap between labels. */ public static int vgap = 0; /** * Constructs a new multi-line label. * @param lines enumeration of lines * @param alignment the alignment value */ public LabelPanel(Enumeration lines, int alignment) { GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout(gridbag); c.fill = GridBagConstraints.NONE; c.gridwidth = GridBagConstraints.REMAINDER; switch (alignment) { case RIGHT: c.anchor = GridBagConstraints.EAST; break; case CENTER: c.anchor = GridBagConstraints.CENTER; break; case LEFT: default: c.anchor = GridBagConstraints.WEST; } Label l; for (int i = 0; lines.hasMoreElements(); i++) { if (i == 0) // first c.insets = new Insets(vgap,hgap,vgap,hgap); else // all but first c.insets = new Insets(0,hgap,vgap,hgap); l = new Label((String)lines.nextElement()); gridbag.setConstraints(l, c); add(l); } validate(); } /** * Constructs a new multi-line label. * @param msg the String that contains multiple lines * @param alignment the alignment value * @param delim line delimiters */ public LabelPanel(String msg, int alignment, String delim) { this(new StringTokenizer(msg,delim),alignment); } /** * Constructs a new multi-line label. * @param msg the String that contains multiple lines * @param alignment the alignment value */ public LabelPanel(String msg, int alignment) { this(msg,alignment,delimDefault); } /** * Constructs a new multi-line label. * @param msg the String that contains multiple lines * @param alignment the alignment value * @param delim line delimiters */ public LabelPanel(String msg, String delim) { this(msg,LEFT,delim); } /** * Constructs a new multi-line label. * @param msg the String that contains multiple lines */ public LabelPanel(String msg) { this(msg,LEFT,delimDefault); } /** Set the font for all lines. */ public void setFont(Font f) { validate(); super.setFont(f); Component[] c = getComponents(); for (int i = 0; i < c.length; i++) c[i].setFont(f); validate(); } }