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

Agents de placement/Fenêtres Java Discussion :

faire apparaitre JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut faire apparaitre JFrame
    Bonjour,
    j'apprens java donc je m'y connais pas encore...
    je voulais savoir...pourquoi en creant une JFrame...je peut la faire apparaitre en faisant quelque chose de la sorte

    public class Graph extends javax.swing.JFrame
    {
    ...

    new Graph().setVisible(true);

    ...
    }

    par contre avec une JPanel ca marche pas...si je remplace JFrame par JPanel.

    Le programme se compile sans erreur...mais en le lancant le JPanel n'apparait pas...pourquoi?

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Un JPanel est fait pour être contenu dans une JFrame (ou tout autre conteneur héritant de la classe Window).
    Il ne peut pas s'afficher tout seul à l'écran

    Si tu veux une fenêtre sans cadre passes par une JWindow ou par un JFrame dont tu auras appelé la méthode setUndecorated(true);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    D'accord j'ai compris...parceque mon but est de creer un petit module qui pourra dessiner n'importe quelle graphique, par exemple y = sin(x).
    Alors je voulais creer un JPanel qui dessinera le graphique en question et ce JPanel je le mettrai dans une JFrame.

    La methode paint d'un composant permet de dessiner si j'ai bien compris, mais la il y a hic...quand je fais:

    setBackground(Color.BLACK); // la c'est la JPanel

    tant que je commente pas la methode paint(...) la couleur ne s'attribut pas a la JPanel...et cela ne m'arrange pas.
    c.a.d comment changer le background de la JPanel tout en conservant son paint(...) ?

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    redéfinis paintComponent(Graphics g) au lieu de paint(Graphics g), sinon pour ce que tu fais tu peux t'inspirer du JXGraph de swingx

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    j'ai redéfini paintComponent(Graphics g) au lieu de paint(Graphics g), mais meme le background du JPanel ne change pas, par contre c'est la couleur des bordures qui change...c'est a dire autour de la JPanel ca devient jaune(si je met Color.yellow par exemple) pour la JPanel.
    Mais si je commente paintComponent(Graphics g) de le JPanel, toute la JPanel devient jaune
    j'avoue que ca me depasse.

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Que dessine tu sur ton JPanel?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    je dessine une courbe point par point

    public void paintComponent(Graphics g)
    {
    g.create(0, 0, this.getWidth(), this.getHeight());
    g.drawLine(x, y, x, y);
    }

  8. #8
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    vire l'appel à g.create(...)
    et appelle super.paintComponent(g) à la fin de ton paintComponent.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    je l'ai fait...ca n'a rien donner

  10. #10
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    place l'appel à super.paintComponent au debut de ton paintComponent et ça ira

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    ca y est ca marche
    merci bcp.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    euh ...voila, donc maintenant c'est la courbe que je dois tracer.
    donc j'ai remarquer qu'apres chaque repaint(que j'appele dans mon Thread courant) le context graphique s'efface entierement et se retrace.

    Donc quand je dessine point par point...les points traces precedement s'effacent...donc ce qui fait que j'ai juste un point qui bouge sur mon JPanel...comment faire pour envoir la courbe entiere?

    Est ce que je dois a chaque repaint..c.a.d a chaque appel de paintComponent redessiner du debut jusqu'au point courant?

  13. #13
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Correct

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    bonjour

    n'y a t-il pas moyent de rendre les lignes plus fines avec Graphics?
    en fait...je desine mes lignes point par point...donc c'est les points qu'il faut faire plus fins!

  15. #15
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour àa il faut caster tes Graphics en Grahics2D et utiliser la méthode setStroke de tes Graphics2D en passant un paramètre une classe étendant l'interface Stroke (très probablement une BasicStroke)...

    Grosso modo ton paintCOmponeent donnera ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected void paintCOmponeent(Graphics g) {
      super.paintComponent(g);
      Grphics2D g2 = (Graphics 2D) g;
      g2.setStroke(new BasicStroke(0.5f));
    ....
    ...
    }

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    justement c'est ce que je fais...c'est le premier parametre de BasicStroke

    g2.setStroke(new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.CAP_SQUARE));

    la valeur minimale est 1...mais mon boss est tetu...il veut que ca soit encore plus fin....que faire??

  17. #17
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Non la valeur minimale n'est pas 1 vu que tu utilise un float et non un int, tu dois pouvoir utiliser 0.5f ou 0.2f ou des valeurs dans ce style

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    j'ai mis 0.2f a la place de 1

    g2.setStroke(new BasicStroke(1, BasicStroke.CAP_ROUND,
    BasicStroke.CAP_SQUARE));

    mais ca n'a pas change...c'est comme si c'est 1.

  19. #19
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il ne serait pas un peu à l'ouest ton boss?
    Car je ne crois pas qu'on puisse passer en dessous du pixel comme unité pour le dessins

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    eh been..c'est ce que je lui ais dis

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

Discussions similaires

  1. Faire apparaitre le menu général
    Par Terminator dans le forum IHM
    Réponses: 10
    Dernier message: 11/12/2004, 17h03
  2. Réponses: 2
    Dernier message: 22/10/2004, 06h50
  3. JSP: faire apparaitre des données ...
    Par LeDébutantJava dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 19/06/2004, 16h21
  4. [Plugin / Graphique] Faire apparaitre une fenêtre?
    Par relivio dans le forum Eclipse Platform
    Réponses: 7
    Dernier message: 31/03/2004, 19h10
  5. Faire une JFrame avec LookAndFeel
    Par aburner dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 03/12/2003, 08h54

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