Bonjour,
Je ne comprends pas pourquoi rien ne s'affiche dans ma fenêtre. Je pense qu'il s'agit d'un problème de variable.
Merci de votre réponse.
package fourmiliere; import javax.swing.JFrame; import javax.swing.*; import java.awt.*; import javax.swing.border.TitledBorder; public class phasedejeu extends JFrame{ public phasedejeu() { try { jbInit(); } catch (Exception ex) { ex.printStackTrace(); } this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setLocation(100,100); this.setSize(700,550); this.setTitle("Simulation"); this.setVisible(true); } private JPanelDessin2 jPanel5 = new JPanelDessin2(this); private Dimension dim = jPanel5.getSize() ; private int larg = dim.width ; private int haut = dim.height; public int getLarg(){ return larg; } public void setLarg(int x){ larg=x; } public int getHaut(){ return haut; } public void setHaut(int y){ haut=y; } JPanel jPanel6 = new JPanel(); JPanel jPanel7 = new JPanel(); TitledBorder titledBorder1 = new TitledBorder(""); Icon tigerIcon = new ImageIcon("stop.gif"); JButton jButton1 = new JButton("",tigerIcon); Icon stopIcon = new ImageIcon("lecture2.gif"); JButton jButton2 = new JButton("",stopIcon); Icon fourmIcon = new ImageIcon("fourmis.gif"); }
package fourmiliere; import java.awt.*; import javax.swing.*; public class JPanelDessin2 extends JPanel { private phasedejeu jeu; public int largeur ; public int hauteur ; Image tete2,fourmiliere,texture; public JPanelDessin2(phasedejeu paramJeu){ this.jeu=paramJeu; this.largeur = jeu.getLarg(); this.hauteur = jeu.getHaut(); texture=Toolkit.getDefaultToolkit().getImage("herbe.32934.jpg"); tete2 = Toolkit.getDefaultToolkit().getImage("fourmi.jpg"); fourmiliere = Toolkit.getDefaultToolkit().getImage("DSC_4798 Anthill l.jpg"); try { jbInit(); } catch (Exception ex) { ex.printStackTrace(); } } public void paintComponent (Graphics g) { super.paintComponent(g); this.setBackground(Color.white); int x=largeur; int y=hauteur; //g.drawImage(texture,0,0,1350,758,this); g.drawImage(tete2,200,50,x,y, this); //g.drawImage(fourmiliere,50,100,100,100,this); } private void jbInit() throws Exception { } }
Et dans ton code où incorpores tu les JPanel à ton JFrame ?
Un autre remarque. Ta façon de charger les images n'est pas ce qu'il y a de plus solide. Ce que je veux dire c'est que si tu déplaces un élément de ton application ou si tu emballes tout dans un jar, ça risque ne ne pas marcher.
Voila la class phasedejeu en entier:
classe principale:
Es tu sûr que la taille du jpanel5 est correctement définie ?
Si je comprends quelque chose à ton code il me semble que non.
Si ça se trouve en raison du nombre important d'autres composants ton jpanel 5 est microscopique et tout ce que tu dessines tombe hors limite, donc tu ne vois rien.
De plus ce code
Concrètement il sert à quoi ?
J'aime bien ce que fait Borland, la plupart du temps...
Mais leur méthode "jbInit()" c'est une horreur !
Je n'y comprends jamais rien... Oui, je sais, on va me répondre que ce n'est pas la peine de la regarder puisqu'elle est générée automatiquement.
En fait, je hais les générateurs automatiques. Le programmeur n'est plus le maître de sa réalisation et du coup, quand ça foire, il est perdu...!
Mon conseil c'est : Quand tu n'arrives pas à résoudre un problème, décompose-le en plusieurs, jusqu'à ce qu'ils soient suffisament petits pour que tu puisse les résoudre un par un.
Concrétement dans ton cas, à ta place je ferais plus de classes (d'abord une par JPanel) ce qui segmentera ton graphisme. Après tu pourras essayer de les afficher une à une, puis à plusieurs ensemble... jusqu'à trouver ce qui fait que cela ne s'affiche pas correctement.
Tout à fait d'accord.
D'ailleurs moi c'est avec Emacs que je suis le plus productif.
Oui je sais c'est une attitude de dinosaure, on me le dit souvent :D
Mais le dinosaure et son Emac ont plus d'un tour dans leur sac et sont rarement perdus dans du code illisible comme c'est le cas ici ;)