Comment

Hedrick Messages postés 3 Date d'inscription dimanche 25 mars 2007 Statut Membre Dernière intervention 27 mars 2007 - 25 mars 2007 à 03:22
Fifan Messages postés 26 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 10 mai 2007 - 10 avril 2007 à 18:09
Comment dessiner ,en java, sur un panel contenant dans un autre panel (en fait il y a 3 panels superposé) je veux dessiner sur le 3ième panel. Merci! 

6 réponses

gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
25 mars 2007 à 11:17
Salut,

La superposition des panles ne change pas la manière de dessiner sur un panel à priori, vu que ta fenetre n'est qu'un arbre de composants après tout.

Si jamais tu n'as pas les notions de base du dessin en Java, j'te renvoie à cette page :
http://duj.developpez.com/tutoriels/java/dessin/intro/

gmi19oj19
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
25 mars 2007 à 17:35
Salut:

1. Solution 1: "dessin non persistent"
Tu récupère le contexte d'affichage du JPanel sur lequel tu veux dessiner.

Graphics g = panel.getGraphics ();
// Utiliser g pour dessiner
// ...

Mais une fois la fenêtre principale est minimisée,... le dessin s'efface.

2. Solution 2: "meilleure"
public class CustomPanel extends JPanel () {
    public CustomPanel () {
       super ();
       // ...
    }
    public void paint (Graphics g) {
       Graphics2D g2D = (Gpahics2D)g;
       // Dessiner
    }
}

Chaque fois
que la fenêtre principale est minimisée,... le dessin reste intacte puisque la méthode paint est automatiquement appelée.

________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts"
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
25 mars 2007 à 17:38
Salut:

Petite rectification: enlève les paraenthèses.


2. Solution 2: "meilleure"
public class CustomPanel extends JPanel () { // INCORRECTE
    public CustomPanel () {
       super ();
       // ...
    }
    public void paint (Graphics g) {
       Graphics2D g2D = (Gpahics2D)g;
       // Dessiner
    }
}








public class CustomPanel extends JPanel { // CORRECTE
    public CustomPanel () {
       super ();
       // ...
    }
    public void paint (Graphics g) {
       Graphics2D g2D = (Gpahics2D)g;
       // Dessiner
    }
}



________________________________________________________________________________
A.B. : 
"Dieu nous donne des mains, mais il ne bâtit pas les ponts
0
Hedrick Messages postés 3 Date d'inscription dimanche 25 mars 2007 Statut Membre Dernière intervention 27 mars 2007
26 mars 2007 à 01:28
J'ai un problème de dessin sur JPanel en Java en fait il s'agit de quatre Jpanels superposés (car je fait un programme de logiciel de calcul de filtre) en Applet. Je n'arrive pas à dessiner sur le dernier panel placé c-à-d je veux tracer une courbe là-dessus. J'ai déjà fait beaucoup d'essai mais je n'arrive pas à le réaliser.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Hedrick Messages postés 3 Date d'inscription dimanche 25 mars 2007 Statut Membre Dernière intervention 27 mars 2007
27 mars 2007 à 02:28
J'ai fait un programme comme ceci:
import java.awt.*;
import javax.swing.*;


public class exemple1 extends JFrame{                     
 
public void paint(Graphics g) {
  super.paint(g);
 g.drawString("Hello world Mada",20,20);
 g.setColor(Color.green);
 g.fillRect(20,30,40,30);
}
 }
Je veux l'executer c-à-d afficher ce dessin. Je ne sais pas comment faire? J'ai ecrit ce programme en JCreator.
0
Fifan Messages postés 26 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 10 mai 2007
10 avril 2007 à 18:09
Ton pb vient du fait que tu dessine sur ton JFrame. Or, un JFrame a par défaut un RootPane, un LayredPane un ContentPane et enfin un GlassPane (cf http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html) qui de dessinent par dessus le JFrame.
Il te faut utiliser un panel (comme indiqué dans les posts précédants) et l'utiliser dans ton JFrame.
Un exemple valant mieux qu'un long discours:
public class Exemple1 extends JFrame {

    public Exemple1() {
        setContentPane(
                // Redéfinition en ligne d'un nouveau JPanel
                // Tu peux aussi utiliser un autre type de Jpanel
                new JPanel() {
            public void paint(Graphics g) {
                super.paint(g);
                g.drawString("Hello world Mada", 20, 20);
                g.setColor(Color.green);
                g.fillRect(20, 30, 40, 30);
            }       
        });
       
        // Définition d'une taille arbitraire
        setSize(100, 200);
        // Positionnement du JFrame au centre de l'écran
        setLocationRelativeTo(null);
        // Sortie de l'application lors de la fermeture de la fenêtre
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // En clair dans le code
        setVisible(true);
    }
   
    public static void main(String... args) {
        Exemple1 exemple = new Exemple1();
    }
}
NB: par convention, le nom des classes commence par une Majuscule
0
Rejoignez-nous