Bonjour,
J'ai voulu crée un applet java pour créer un diagramme à partir d'une liste. Je pense que le mieux c'est de montrer un exemple et le code.

Voici une page d'exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
<html>
<head>
<title> Applet</title>
</head>
<body>
<b> Test1 : </b> <br/>
<APPLET code="AppletCamembert.class" width="500" height="300">
<param name="TITLE" value="Vehicules">
<param name="DONNEES" value ="10|Autos;30|Motos;5|Avions">
Pas de Java.
</APPLET>
<br/>
<br/>
 
<b> Test2 : </b> <br/>
<APPLET code="AppletCamembert.class" width="500" height="300">
<param name="TITLE" value="Aliments">
<param name="DONNEES" value ="30|chocolat;10|Pain;24|Lait;33|Bonbons">
Pas de Java.
</APPLET>
<br/>
<br/>
 
</body>
</html>
Voila mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
import java.applet.Applet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
 
public class AppletCamembert extends Applet {
 
	public void init() {
		setSize(500, 300);
		if (getParameter("TITLE") != (null))
			this.title = getParameter("TITLE");
		else
			this.title = "No title";
		if (getParameter("DONNEES") != (null)){
			System.out.println (title + "\n" + getParameter("DONNEES"));
			this.donnees = new Donnees(getParameter("DONNEES"));
		} else
			empty = true;
	}
 
	public void paint(Graphics g) {
		float angle = 0, anglebis, anglemid;
		String value;
		int size = 20;
		g.setFont(new Font("Tahoma", 1, size));
		g.drawString(title, 300, 80);
 
		if (!empty) {
			g.drawArc(20, 30, 250, 250, 0, 360);
			for (int i = 0; i < donnees.valeurs.length; i++)
				somme += donnees.valeurs[i];
			g.setFont(new Font("Tahoma", 0, 20));
			for (int i = 0; i < donnees.valeurs.length; i++) {
				float pourcentage = donnees.valeurs[i] / this.somme;
				anglebis = (float) (angle + pourcentage * 360);
				g.setColor(new Color((float) Math.random(), (float) Math
						.random(), (float) Math.random()));
				g.fillRect(330, 100 + 20 * i, 10, 10);
				g.fillArc(20, 30, 250, 250, 180 - Math.round(angle), -Math
						.round(pourcentage * 360));
				angle = anglebis;
			}
			angle = 0;
			for (int i = 0; i < donnees.valeurs.length; i++) {
				float pourcentage = donnees.valeurs[i] / this.somme;
				anglebis = (float) (angle + pourcentage * 360);
				anglemid = (anglebis + angle) / 2;
				g.setColor(Color.BLACK);
				g.drawString(donnees.legendes[i], 360, 110 + 20 * i);
				value = Float.toString(donnees.valeurs[i]) + "%";
				if (pourcentage >= 0.1)
					g.drawString(value, 120 - (int) (75 * Math.cos(Math
							.toRadians((double) anglemid))),
							170 - (int) (75 * (Math.sin(Math
									.toRadians((double) anglemid)))));
				angle = anglebis;
			}
		}
		else {
			g.setColor(Color.RED);
			g.setFont(new Font("Tahoma", 1, 30));
			g.drawString("No statistic found", 100, 200);
		}
	}
 
	public void stop () {
		title = null;
		donnees = null;
	}
 
	private String title;
	private Donnees donnees;
	private float somme;
	private boolean empty;
	private static final long serialVersionUID = 1L;
}
Les camemberts sont bien crées et s'affichent bien. Le problème est que lorsque je veux redimensionner la fenêtre de mon browser ou que je veux simplement descendre la barre de scrolling, tout l'affichage part en live. Est ce quelqu'un voit d'où cela pourrait venir ?

Si le faut je mettrais mon applet online pour vous montrez mon problème.