Ajuda Applet de Gráfico de Barras

0 respostas
A

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;
    }
    }
Criado 1 de março de 2007
Respostas 0
Participantes 1