Hedrick
Messages postés3Date d'inscriptiondimanche 25 mars 2007StatutMembreDernière intervention27 mars 2007
-
25 mars 2007 à 03:22
Fifan
Messages postés26Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention10 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!
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 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"
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 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
Hedrick
Messages postés3Date d'inscriptiondimanche 25 mars 2007StatutMembreDernière intervention27 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Hedrick
Messages postés3Date d'inscriptiondimanche 25 mars 2007StatutMembreDernière intervention27 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.
Fifan
Messages postés26Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention10 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