Mega Code Archive
Multi-label Label
//package gameEngine.graphics.utils;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.SystemColor;
import java.util.StringTokenizer;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
/**
* A class that allows the use a Multi-label Label
*
* @author Internet
*/
public class MultiLabel extends JComponent implements SwingConstants
{
private static final long serialVersionUID = -1611795277013703880L;
int num_lines,line_height,line_ascent;
int max_width = -1;
int text_height = -1;
int[] line_widths;
int btnMarginWidth =1;
private String lines[]=null;
private int horizontalAlignment = LEADING;
private int textAlignment = LEADING;
private int verticalAlignment = CENTER;
public MultiLabel()
{
this("", LEADING, LEADING, CENTER);
}
public MultiLabel(String text)
{
this(text, LEADING, LEADING, CENTER);
}
public MultiLabel(String text, int horizontalAlignment)
{
this(text, horizontalAlignment, LEADING, CENTER);
}
public MultiLabel(String text, int horizontalAlignment, int textAlignment)
{
this(text, horizontalAlignment, textAlignment, CENTER);
}
public MultiLabel(String str, int horizontalAlignment, int textAlignment, int verticalAlignment)
{
this.setForeground(UIManager.getColor("Label.foreground"));
this.setBackground(UIManager.getColor("Label.background"));
this.setFont (UIManager.getFont ("Label.font"));
setText(str);
this.horizontalAlignment = horizontalAlignment;
this.textAlignment = textAlignment;
this.verticalAlignment = verticalAlignment;
}
public void setText(String text)
{
if (text == null) text="";
StringTokenizer tkn = new StringTokenizer(text,"\n");
num_lines = tkn.countTokens();
lines = new String[num_lines];
line_widths = new int [num_lines];
for (int i=0;i