2016-06-30 13 views
-1

Vor kurzem entschied ich zu lernen, wie man 2D-Spiele mit JAVA (Eclipse) zu machen, so fand ich ein Tutorial online, das zeigt, wie SuperMari Spiel mit Java zu machen, schrieb ich den gleichen Code schrieb er und ich folgte Schritt für Schritt, was er tat, worüber ich nicht viel reden konnte, leider ist er Code-Shows, nach dem Exportieren, ein Fenster mit zwei Bildern drin, während mir nur das Fenster ohne Bilder zeigt, das versichere ich dir importierte die zwei Bilder und legte sie in ein Paket, um alle Arten von Problemen zu vermeiden, aber es zeigt immer noch nichts.Bilder keine Anzeige in meinem Java-Programm

mein Code hat zwei Klassen, "Main" und "Scene", hier ist es, hoffentlich wird jemand eine Lösung für mich finden, danke Jungs!

Main.java:

package AiMEUR.AMiN.jeu; 

import javax.swing.JFrame; 

public class Main { 

    public static Scene scene; 

    public static void main(String[] args) { 

     JFrame fenetre = new JFrame("Naruto in mario World!!"); 
     fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     fenetre.setSize(700, 360); 
     fenetre.setLocationRelativeTo(null); 
     fenetre.setResizable(false); 
     fenetre.setAlwaysOnTop(true); 

     scene = new Scene(); 


     fenetre.setContentPane(scene); 
     fenetre.setVisible(true); 

    } 

} 

Scene.java:

package AiMEUR.AMiN.jeu; 

import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Image; 

import javax.swing.ImageIcon; 
import javax.swing.JPanel; 

@SuppressWarnings("serial") 
public class Scene extends JPanel{ 

    private ImageIcon icoFond; 
    private Image imgFond1; 

    private ImageIcon icoMario; 
    private Image imgMario; 

    private int xFond1; 

    public Scene(){ 

     super(); 

     this.xFond1 = -50; 

     icoFond = new ImageIcon(getClass().getResource("/Images/fond.gif")); 
     this.imgFond1 = this.icoFond.getImage(); 
     icoMario = new ImageIcon(getClass().getResource("/Images/1.png")); 
     this.imgMario = this.icoMario.getImage(); 
    // paintComponent(this.getGraphics()); 
    } 

    public void paintCompenent(Graphics g){ 

     super.paintComponent(g); 
     Graphics g2 = (Graphics2D)g; 

     g2.drawImage(this.imgFond1, this.xFond1, 0, null); 
     g2.drawImage(imgMario, 300, 245, null); 
    } 

} 
+0

ich, dass 'icoFond = new ImageIcon überprüfen würde (getClass(). getResource ("/ Images/fond.gif")); 'und die andere ähnliche Zeile lädt tatsächlich Ihre Bilder. –

+0

Entschuldigung! aber ich habe nicht verstanden was du meinst! Sie denken, ich sollte die Codezeile ändern, auf die Sie verwiesen haben? –

+0

Nein, das ist die Zeile, die Sie überprüfen sollten. Versuchen Sie es anschließend: 'int status = icoFond.getImageLoadStatus()' - dies sollte einer von 'MediaTracker.ABORTED',' MediaTracker.ERRORED' oder 'MediaTracker.COMPLETE' sein. Siehe die API unter https://docs.oracle.com/javase/7/docs/api/javax/swing/ImageIcon.html –

Antwort

1

Sie nicht die paintComponent Methode richtig benannt haben, und deshalb ist es nicht außer Kraft gesetzt werden.

Der richtige Name ist paintComponent nicht paintCompenent:

public class Example extends JPanel { 

    @Override 
    public void paintComponent(final Graphics g) { 
     super.paintComponent(g); 
    } 
} 
+0

Vielen Dank! Das war die richtige Antwort! Es funktioniert jetzt –

-1

Sie den Ladestatus eines ImageIcon durch so etwas wie dies zu tun bestimmen kann:

public Scene(){ 

    super(); 

    this.xFond1 = -50; 

    icoFond = new ImageIcon(getClass().getResource("/Images/fond.gif")); 

    int status = icoFond.getImageLoadStatus(); 
    switch (status) { 
     case (MediaTracker.COMPLETE): { 
      System.out.println("icoFond image has successfully loaded"); 
     } 
     case (MediaTracker.ERRORED): { 
      System.out.println("The icoFond image didn't load successfully"); 
      // probably because the image isn't actually at "/Images/fond.gif" 
     } 
    } 


    this.imgFond1 = this.icoFond.getImage(); 
    icoMario = new ImageIcon(getClass().getResource("/Images/1.png")); 
    this.imgMario = this.icoMario.getImage(); 
// paintComponent(this.getGraphics()); 
}