Preciso saber o que as linhas em negrito do codigo do applet abaixo fazem especificadamente…
import java.awt.*;
public class Grafico extends java.applet.Applet {
private String title; //declara a variavel title que recebera o titulo
private Font font; //delclara variavel do tipo fonte para posterior utilizacao na fonte dos textos dos graficos
private FontMetrics metrics; //variavel do tipo de metrica de fontes que recebe a posterior formatacao da fonte
private int columns; //variavel do tipo coluno que recebe os parametros passados pelo html
private int values[]; //cria vetor que recebera os valores do tamanho de cada barra
private Color colors[]; //vetor das cores das barras
private String labels[]; //vetor das legendas de cada barra
private int scale = 2; //variavel que recebe a escala para criacao das barras
private int maxLabelWidth = 0;
private int barSpacing = 10;
private int maxValue = 0;
public void init() {
getSettings();
values = new int[columns];
labels = new String[columns];
colors = new Color[columns];
for (int i=0; i < columns; i++) {
parseValue(i);
parseLabel(i);
parseColor(i);
}
}
// Define as Configuraçõs que o grafico vai criar
private void getSettings() {
// Define a fonte a ser usada, caso não for informado no HTML, ele vai usar um padrão de fonte.
font = new java.awt.Font(“arial”, Font.BOLD, 12);
metrics = getFontMetrics(font);
// Define o Nome a ser usado, caso não for informado no HTML, ele vai usar um nome padrão.
title = getParameter(“title”);
if (title == null) {
title = “Grafico de Barras”;
}
//Define o numero de colunas, caso não for informado no HTML, ele vai usar um valor padrão.
String temp = getParameter(“columns”);
if (temp == null) {
columns = 4 ;
} else {
columns = Integer.parseInt(temp);
}
}
//Comado que define os valores dos Graficos, devem ser informados atraves do codigo HTML.
private void parseValue(int i) {
String temp = getParameter(“C” + (i+1));
try {
values[i] = Integer.parseInt(temp);
} catch (NumberFormatException e) {
values[i] = 0;
} catch (NullPointerException e) {
values[i] = 0;
}
maxValue = Math.max(maxValue, values[i]);
}
// Label é o nome dos graficos, e tambem deve ser informado atraves do HTML.
private void parseLabel(int i) {
String temp = getParameter(“C” + (i+1) + “_label”);
if (temp==null) {
labels[i] = “”;
} else {
labels[i] = temp;
}
maxLabelWidth = Math.max(metrics.stringWidth
((String) (labels[i])), maxLabelWidth);
} //Define as colers que vão ser usadas em cada grafico.
private void parseColor(int i) {
String temp = getParameter(“C” + (i+1) + “_color”);
if (temp != null) {
temp = temp.toLowerCase();
if (temp.equals(“red”)) {
colors[i] = Color.red;
} else if (temp.equals(“green”)) {
colors[i] = Color.green;
} else if (temp.equals(“blue”)) {
colors[i] = Color.blue;
} else if (temp.equals(“pink”)) {
colors[i] = Color.pink;
} else if (temp.equals(“orange”)) {
colors[i] = Color.orange;
} else if (temp.equals(“magenta”)) {
colors[i] = Color.magenta;
} else if (temp.equals(“cyan”)) {
colors[i] = Color.cyan;
} else if (temp.equals(“white”)) {
colors[i] = Color.white;
} else if (temp.equals(“yellow”)) {
colors[i] = Color.yellow;
} else if (temp.equals(“gray”)) {
colors[i] = Color.gray;
} else if (temp.equals(“darkGray”)) {
colors[i] = Color.darkGray;
} else {
colors[i] = Color.gray;
}
} else {
colors[i] = Color.white;
}
}
public void paint(Graphics g) {
// Desenha o nome do titulo no centro do grafico.
g.setColor(Color.black);
g.setFont(font);
[b]g.drawRect(0, 0, getSize().width - 1, getSize().height - 1);
int titleWidth = metrics.stringWidth(title);
int cx = Math.max((getSize().width - titleWidth) / 2, 0);
int cy = getSize().height - metrics.getDescent();
g.drawString(title, cx, cy); [/b]
// Desenha as barras e seus titulos
paintVertical(g);
}
private void paintVertical(Graphics g) {
[b]int barWidth = maxLabelWidth;
for ( {int i = 0; i < columns; i++)
// X coordenada para o label e barra
int widthOfItems = (barWidth + barSpacing) * columns - barSpacing;
int cx = Math.max((getSize().width - widthOfItems) / 2, 0);
cx += (maxLabelWidth + barSpacing) * i;
// Y coordenada para o label e barra
int cy = getSize().height - metrics.getHeight()
- metrics.getDescent() - 4;
// Desenhas os Titulos das barras
g.setColor(Color.black);
g.drawString(labels[i], cx, cy);
cy -= metrics.getHeight() - 3;
// Desenha a sombra
g.fillRect(cx + 4, cy - (values[i] * scale) - 4,
barWidth, (values[i] * scale));
// Desenha a Barra
g.setColor(colors[i]);
g.fillRect(cx, cy - (values[i] * scale),
barWidth + 1, (values[i] * scale) + 1);
cy -= (values[i] * scale) + 5; [/b]// Desenha o numero em cima da barra
g.setColor(g.getColor().darker());
g.drawString(Integer.toString(values[i]), cx, cy);
}
}
// os parametros que vão ser usados no HTML
public String[][] getParameterInfo() {
String[][] info = {
{“title”, “string”, “The title of bar graph. Default is ‘Chart’”},
{“columns”, “int”, “The number of columns/rows. Default is 5.”},
{“c#”, “int”, "Subsitute a number for #. "
- “The value/size of bar #. Default is 0.”},
{“c#_label”, “string”, "The label for bar #. " - “Default is an empty label.”},
{“c#_color”, "{RED, GREEN, BLUE, PINK, ORANGE, MAGENTA, CYAN, " - “WHITE, YELLOW, GRAY, DARKGRAY}”,
“The color of bar #. Default is GRAY.”}
};
return info;
}
}