Applet Java - Gráfico de Barras - Dúvida sobre código

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) {
    int barWidth = maxLabelWidth;

    for (int i = 0; i < columns; i++) {

        // X coordenada para o label e barra
    [b]    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;[/b]
        // Desenha a sombra
        g.fillRect(cx + 4, cy - (values[i] * scale) - 4, 
                   barWidth, (values[i] * scale));
        
        // Desenha a Barra
  [b]      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