IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Graphisme Java Discussion :

Applet Java pour dessiner des camemberts


Sujet :

Graphisme Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Applet Java pour dessiner des camemberts
    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.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Tu dessines dans un JPanel je suppose...

    Vérifie donc son BorderLayout: quand on veut faire du dessin, le mieux est un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tonPanel.setborderLayout(null);
    Ainsi, ton affichage ne devrait pas être modifié par un redimentionnement

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci d'avoir répondu aussi vite.

    En fait je dessine directement dans l'applet, pas dans un JPannel. Tout le code est dans mon premier message. Le seul code que je n'ai pas mis est la class Donnee, mais elle me sert juste à decouper une string en tableaux.

    J'ai mis online l'applet pour avoir un exemple qui parle de lui même :
    http://leo.bzh.free.fr/java/test.html

    J'ai vais être plus clair parceque pour l'instant c'est pas trop ça...

    Pour les couleurs de mon graph je les choisis alétoirement. Or quand je redimensionne ma fenêtre tout est redessinné, et donc les couleurs changent et ça fait un bordel. Donc j'aimerais que lorsque l'on redimenssione la fenêtre, l'applet ne soit pas redessinné

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Le problème c'est l'endroit où tu fais ton choix aléatoire de couleurs.

    Fais-le une bonne fois pour toutes à l'initialisation de ton applet, et sauvegarde-les dans des variables de classe qui ne bougeront plus.

    Comme ça quand tu redimentionnes ta fenêtre, ce sont toujours les même couleurs qui sont utilisées puisque tu ne recharges pas tout l'applet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/11/2012, 23h16
  2. Solution de reporting Open Source en Java pour générer des rapports Word, RTF ?
    Par jmax_ dans le forum Autres outils décisionnels
    Réponses: 3
    Dernier message: 19/06/2006, 10h53
  3. [Outils][C#] Existe-il des logiciels pour dessiner des IHM ?
    Par cjacquel dans le forum EDI/Outils
    Réponses: 4
    Dernier message: 22/05/2006, 13h29
  4. [swing] outils pour dessiner des interfaces swing
    Par mlequim dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/02/2006, 15h32
  5. [servlet][applet] communication pour echanger des infos
    Par jeromejanson dans le forum Applets
    Réponses: 11
    Dernier message: 01/07/2005, 13h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo