J'ai pas bien compris ton dernier probleme.
C'est bien le fond du JPanel que tu viens de définir, alors comment il pourrai recouvrir son propre fond?
J'ai pas bien compris ton dernier probleme.
C'est bien le fond du JPanel que tu viens de définir, alors comment il pourrai recouvrir son propre fond?
Mess with the best, die like the rest!
bah écoute moi non plus je comprend pas.
j'ai mis le fond d'écran sur le JPanel. quand je lance l'appli, il s'affiche en gris (couleur par defaut). mais quand je clique sur un bouton (que j'ai défini sans bordures, transparents, ...) ça me créé une zone rectangulaire (de la taille du bouton) rempli par le fond d'écran.
je sais pas si c'est bien clair, mais en gros, c'est comme si mon fond d'écran était caché par le JPAnel ce qui est un peu absurde
Je ne suis pas sur que ca vienne de ca mais essaie de remplacer :
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part g.drawImage(img,0,0,null);
Code : Sélectionner tout - Visualiser dans une fenêtre à part g.drawImage(img,0,0,this);
Mess with the best, die like the rest!
alors en remplaçant ça, quand je clique sur un bouton, ça ne me fait plus le bug. mais l'image n'apparait toujours pas
alors j'ai découvert un truc assez marrant. lorsque j'exécute mon programme, aucun fond d'écran.
je réduit alors ma fenetre dans la barre des taches puis je la fait réapparaitre. et la, mon fond d'écran se met.
je pourrais faire quoi pour qu'il apparaisse sans que j'ai besoin de faire cette manipe :s ?
Je ne c pas trop. Est ce que ca fait la même chose quand tu redimensionne ta fenêtre plutot que de la réduire.
Essai peut etre de placer un repaint() de ton JPanel qqpart dans ton code, je ne vois que ca.
Mess with the best, die like the rest!
Essaie un refresh(), un repaint() ou un validate() (suivant le type de container que tu as...) sur ta fenêtre principale
Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !
Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !
essaye d'appeler repaint() sur ton panel
édit : hum j'ai un train de retard moi
Chercher dans la Javadoc directement depuis Firefox / IE7 : http://lebesnec.free.fr/?p=8
si je déplace ma fenetre et qu'elle sort des bordures de mon écran, lorsque je la recentre on voit le fond d'écran sur la partie qui a été déplacée. donc la je teste avec des refresh, des repaints, etc... pour le moment ça ne change rien. alors faut que je trouve a quel endroit faut que je le mette pour que ça marche. en tout cas merci beaucoup pour votre aide depuis le début
bon ba ça me gave parce que j'ai mis des repaint un pêu partout et le probleme reste le meme....
tu as essayé ce que t as dit leminipouce, avec refresh et validate sur la fenetre principale.
Mess with the best, die like the rest!
alors j'ai testé le validate mais par contre l'instruction refresh() est inconnue... comme ça se fait qu'il ne la trouve pas ?
ma fenetre principale est une JFrame.
peut etre parce que la méthode refresh n'existe pas
Mess with the best, die like the rest!
bah ça doit etre ça je pense...
ya un truc aussi, je lance l'appli, et le fond d'écran apparait si je clique le bouton d'agrandissement de la fenetre (en haut a gauche).
franchement, c'est un peu bizarre tout ça.....
donne voir un peu de code comme ta méthode paintComponent et la déclartion du JPanel et son insertion dans le layout de la JFrame. Y a forcément qqchose qui cloche à ce niveau.
Mess with the best, die like the rest!
ok
ensuite mon JFrame
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 public class myJPanel extends JPanel { int h_f, l_f;//hauteur fenetre, largeur fenetre XYLayout bordure_panel = new XYLayout(); public Image img; myJPanel(int posx,int posy,int largeur, int hauteur, String nomImage) { h_f = hauteur; l_f = largeur; bordure_panel.setHeight(h_f); bordure_panel.setWidth(l_f); setLayout(bordure_panel); File f = new File(nomImage); if (f.exists()) { java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit(); img = toolkit.getImage(nomImage); test = toolkit.getImage("images/creer1.jpg"); } else System.out.println("fond d'écran non trouvé. vérifiez le chemin !"); setSize(l_f, h_f); setVisible(true); } public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(img,0,0,this); } }
et enfin l'utilisation
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 public class myJFrame extends JFrame { XYLayout bordure_frame = new XYLayout(); Container f = getContentPane();/*fenetre*/ myJPanel interieur; public myJFrame() { new JFrame(); } public void create_fenetreFS(String nomFenetre,int posx, int posy ,int largeur, int hauteur,String nomImage { setTitle(nomFenetre); setUndecorated(false); setLocation(posx,posy); interieur = new myJPanel(posx,posy,largeur, hauteur, nomImage); bordure_frame.setHeight(hauteur); bordure_frame.setWidth(largeur); f.setLayout(bordure_frame); f.setSize(largeur, hauteur); } public void afficher() { setResizable(true); setVisible(true); show(); pack(); } public void paintComponent(Graphics g) { g.drawImage(interieur.img,0,0,this); repaint(); } }
voila. en espérant que ça puisse vous aider.
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 public class menuPrincipal extends myJFrame implements ActionListener { myJButton b_creer; Dimension tailleEcran = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); int max_largeur = (int)tailleEcran.getWidth(); int max_hauteur = (int)tailleEcran.getHeight(); public menuPrincipal() { try { InitMenu(); } catch (Exception ex) { ex.printStackTrace(); } } b_creer = new myJButton("CREER UNE ANIMATION"); private void InitMenu() throws Exception { create_fenetreFS("Menu Principal",0,0,max_largeur,max_hauteur,"images/fond1280x1024.jpg"); /*ajout d'écouteurs d'evenements sur les boutons*/ b_creer.addActionListener(this); /*ajout des boutons dans la fenetre*/ interieur.add(b_creer, new XYConstraints(109, 74, 183, 43)); f.add(interieur , new XYConstraints(0,0,max_largeur,max_hauteur)); } public static void main(String[] args) { menuPrincipal mp = new menuPrincipal(); mp.afficher(); } }
Dans ton constructeur de menuPrincipal il te manque un "super();" au début, pareil pour ton constructeur de myJPanel. Je c pas si ca résoudra ton problème. Je n'ai pas l'impression qu'il y ai d'autres erreurs.
Sinon voila un test que j'ai fait et qui marche parfaitement :
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 public class Test1 extends JPanel { Image img; public Test1() { super(null); img = this.getToolkit().createImage("Chemin vers l'image"); } public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(img,0,0,this); } public static void main(String[] args) { Test1 t = new Test1(); JButton jb = new JButton("clic"); jb.setSize(60,20); jb.setLocation(100,100); t.add(jb); JFrame frame = new JFrame("test"); frame.getContentPane().add(t); frame.setSize(500,500); frame.setLocation(200,200); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
Mess with the best, die like the rest!
bah je viens de rajouter le super() dans mon constructeur de myJPanel. alors ça corrige un bug. c'est a dire que quand je passe d'une fenetre a une autre en cliquant sur un bouton, le fond d'écran se met automatiquement sur la nouvell fenetre. cependant, le probleme ne veut pas se régler pour ma premiere fenetre
Finalement il y a dautres erreur
C'est pas tres è joli ca :
faire plutot :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Container f = getContentPane();/*fenetre*/ public myJFrame() { new JFrame(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Container f;/*fenetre*/ public myJFrame() { super(); f = getContentPane(); }
Mess with the best, die like the rest!
ça change rien...
je vais finir par croire que le Java ne veut pas de moi ^^
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager