Pessoal, boa tarde.
Trabalho com Lotus Notes e um de nossos sistemas (acessado exclusivamente
via browser web) cont�m um Applet java. Um fonte testado e validado.
Para quem tem um pouco de intimidade com o Notes, existe um formul�rio com
o applet inserido.
Quando o gr�fico deve ser mostrado, uma rotina varre a base e coloca os
dados corretos num novo documento, criado com base neste formul�rio.
O gr�fico consiste num c�rculo (gr�fico pizza) e uma legenda, com pequenos
quadrados coloridos e texto est�tico.
Ao que parece, se o gr�fico for plotado e, atrav�s dos links, navegar-se
at� a p�gina de op��es e mandar plotar novamente, ocasionalmente o c�rculo
n�o � plotado, nem os quadrados da legenda. Fica apenas o texto.
Isso s� acontece no browser. No cliente Notes 5.0, funciona ok.
O cliente roda IE 5.5, mas j� testamos tamb�m no 5.0 e no 6.0
Nenhuma exce��o � reportada no console.
Segue trecho do c�digo abaixo. O que se observa � que os drawString() do
m�todo que desenha a legenda (drawIndex) aparecem, mas o restante n�o. O
motivo � que � desconhecido.
Como n�o tenho intimidade nenhuma com programa��o visual em Java, posso ter
feito algo errado.
Em fun��o do deadline, esta quest�o � urgente. Conto com a ajuda de voc�s.
Obrigado e um abra�o
Augusto
========
//wedges[] � um array de elementos PieItem.
//wedgeColor[] � um array de elementos Color, de mesmo tamanho que PieItem.
class PieItem {
//Properties
public int arcSize; // fraction transformed in degrees. Used by
fillArc
public double frac; // each one has a number
public String label; // a label
public int color_R; // and a color (RGB format - an int for each
parameter
public int color_G;
public int color_B;
// Constructor
PieItem (String s) {
StringTokenizer t = new StringTokenizer(s, ",");
frac = Double.valueOf(t.nextToken()).doubleValue();
label = t.nextToken();
color_R = Integer.valueOf(t.nextToken()).intValue();
color_G = Integer.valueOf(t.nextToken()).intValue();
color_B = Integer.valueOf(t.nextToken()).intValue();
} // constructor
} // PieItem
//A classe PieView, que estende Applet, tem os seguintes m�todos (mais
importantes):
public void paint(Graphics g) {
int startDeg = 0;
int arcDeg;
int x, y;
double angleRad;
g.setColor(Color.lightGray); // shadow
g.fillOval(pieBorderWidth+3,pieBorderWidth+3,pieDiameter,pieDiameter);
g.setColor(Color.gray); // "other" is gray
g.fillOval(pieBorderWidth,pieBorderWidth,pieDiameter,pieDiameter);
int wci = 0;
int i;
// Desenho das fatias
for (i = 0; i<this.wedges.length; i++) {
//arcDeg = (int) (((this.wedges[i].frac / total) * 360) +
0.5);
arcDeg = this.wedges[i].arcSize;
g.setColor(wedgeColor[wci++]);
g.fillArc(pieBorderWidth, pieBorderWidth, pieDiameter,
pieDiameter, startDeg, arcDeg);
startDeg += arcDeg;
} // draw wedges
// Constru��o da legenda
x = 2 * pieBorderWidth + pieDiameter;
y = pieBorderWidth;
NumberFormat pf = NumberFormat.getPercentInstance();
long auxiliar = 0;
int left = 0;
int right = 0;
for (i = 0; i<this.wedges.length; i++) {
auxiliar = 10000 * this.wedges[i].arcSize / 360;
left = (int) auxiliar / 100;
right = (int) auxiliar % 100;
drawIndex(g, wedgeColor[i], wedges[i].label + " ("
+ left + "," + right + "%)", x, y + 12 * i);
}
} // paint()
public void drawIndex(Graphics g, Color color, String label, int x, int
y) {
g.setColor(Color.black);
g.drawRect(x,y,7,7);
g.setColor(color);
g.fillRect(x+1,y+1,6,6);
g.setColor(Color.black);
g.drawString(label, x+13,y+7);
}
========
============================
Augusto C�sar Guagliano
Gerente de Projetos
Infosoftware Consulting
Office: +55 19 3256 4131
http://www.infosoftware.com.br
============================
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------