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

2D Java Discussion :

[Java2D] Ecrire dans un carre


Sujet :

2D Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 6
    Par défaut [Java2D] Ecrire dans un carre
    Bonjour,
    Mon application est un éditeur graphique modéliser un système sous forme de réseau de Petri (Carre, cercle, flèche, jeton).
    Quand je dessine un carré (tâche) il faut ajouter un nom pour cette tâche à l'intérieur de cet carré.
    problème:
    Avec mon code tous les tache prend le nom de la dernière tâche insérer!!!

    partie de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      public void affiche(Graphics g){
    	Graphics2D g2 = (Graphics2D) g;
        super.affiche(g);
        g2.setStroke(wideStroke);
        g.drawPolygon( this.toPolygon());
    	PoliceNomTache = new Font("Dialog", Font.BOLD, 11);
    	g.setFont(PoliceNomTache);
        g.drawString(DialogueEtiquette.getTexte(),tab[0].rendreX()+3,tab[0].rendreY()-20);
        return;
      }
    tab[i] contient des points pour dessiner un carré.
    (Ces points sont insérer par la souris: e.getX() , e.getY() )

    Classe DialogueEtiquette:
    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
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    @SuppressWarnings("serial")
    public class DialogueEtiquette extends JDialog implements ActionListener {
    	private static JTextField champDeTexte;
        DialogueEtiquette(String titre) {
            super((JFrame) null, titre, true);
            JButton bouton = new JButton("OK");
            bouton.addActionListener(this);
            champDeTexte = new JTextField(20);
            champDeTexte.addActionListener(this);
            JPanel panneau = new JPanel();
            panneau.add(bouton);
            getContentPane().add(new JLabel("Donnez l'étiquette"), BorderLayout.NORTH);
            getContentPane().add(champDeTexte, BorderLayout.CENTER);
            getContentPane().add(panneau, BorderLayout.SOUTH);
            pack();
            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit()
    		.getScreenSize();     
            setLocation((screenSize.width-getSize().width)/2,(screenSize.height-getSize().height)/2);
            setVisible(true);
        }
        public void actionPerformed(ActionEvent evt) {
            dispose();
        }
    	public static String getTexte() {
            return champDeTexte.getText();
    	}
    }
    bug:
    merci:

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut,

    Citation Envoyé par Med Fateh Voir le message
    Avec mon code tous les tache prend le nom de la dernière tâche insérer!!!
    Normal...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	private static JTextField champDeTexte;
    [...]
    	public static String getTexte() {
    Pourquoi c'est static tout ça???
    Si c'est déclaré static, c'est lié à la classe. Donc dès que tu le définis pour un objet, ça modifie la valeur au niveau de la classe, donc les autres objets verront la même valeur.
    En résumé, vire les déclarations static.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 6
    Par défaut
    Bonjour,
    Merci plegat mais après la suppression de déclaration Static, et aprés la compilation, le compilateur demande de changer 'getTexte()' to 'static' dans le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      public void affiche(Graphics g){
    	Graphics2D g2 = (Graphics2D) g;
        super.affiche(g);
        g2.setStroke(wideStroke);
        g.drawPolygon( this.toPolygon());
    	PoliceNomTache = new Font("Dialog", Font.BOLD, 11);
    	g.setFont(PoliceNomTache);
        g.drawString(DialogueEtiquette.getTexte(),tab_mem[0].rendreX()+3,tab_mem[0].rendreY()-20);
        return;
      }
    merci.

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Citation Envoyé par Med Fateh Voir le message
    Merci plegat mais après la suppression de déclaration Static, et aprés la compilation, le compilateur demande de changer 'getTexte()' to 'static' dans le code suivant:
    Je crois qu'il te faudrait revoir l'utilisation des attributs de classe et des attributs d'objet (même chose pour les méthodes et tout le reste)...

    static => classe
    pas static => objet

    donc si tu veux aller chercher un attribut d'objet, tu ne l'appelles pas en tant qu'attribut de classe.

    Quand tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DialogueEtiquette.getTexte()
    tu demandes la méthode de classe (DialogueEtiquette)...
    si tu veux l'appliquer à l'objet, utilise le nom de ton objet. Là, vu que tu es dans la classe de ton objet en train de définir une de ses méthodes, il te faut utiliser "this" (qui va viser l'objet courant)

    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

Discussions similaires

  1. Ecrire dans un DIV.
    Par cocula dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/02/2005, 15h01
  2. Ecrire dans un fichier grace à un trigger ?
    Par zigoo dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/10/2004, 20h03
  3. [VBS] Ecrire dans les Eventlog avec VBS
    Par Hakkou dans le forum VBScript
    Réponses: 1
    Dernier message: 04/10/2004, 14h50
  4. Réponses: 2
    Dernier message: 08/04/2004, 11h11
  5. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44

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