Ich bin ein Amateur-Java-Coder und ich möchte ein Spiel ähnlich SpaceInvaders machen.Warum werden meine Grafiken nicht angezeigt?
Ich frage mich, warum ist mein Rahmen leer, wenn ich versuche, meine PaintComponent Graphic über ein Panel hinzuzufügen, aber wenn ich meinen Code regelmäßig hinzufügen, zeigt es alle Ergebnisse?
Hier ist meine Objekte Klasse, wenn die Grafiken ohne Panel hinzugefügt werden, und es gibt keinen Konflikt:
package SS;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.Serializable;
import java.util.*;
public class objects extends JPanel{
private int rand1, rand2, y;
int x=0;
Random rand = new Random();
public class picture extends JPanel{
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(Color.BLACK);
for (int c=0;c<=1000;c++){
g.setColor(Color.yellow);
rand1=rand.nextInt(1920);
rand2=rand.nextInt(720);
g.drawOval(rand1, rand2, 1, 1);}
g.setColor(Color.MAGENTA);
g.fillRect(1920/2-x,720-100+y, 50, 50);
}
}
}
Nun ist diese Version meiner Objekte Klasse erzeugt ein leerer Rahmen
package SS;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.Serializable;
import java.util.*;
public class objects extends JPanel{
private int rand1, rand2, y;
int x=0;
Random rand = new Random();
public objects(){
JPanel jp = new JPanel();
picture p = new picture();
jp.add(p);
}
public class picture extends JPanel{
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(Color.BLACK);
for (int c=0;c<=1000;c++){
g.setColor(Color.yellow);
rand1=rand.nextInt(1920);
rand2=rand.nextInt(720);
g.drawOval(rand1, rand2, 1, 1);}
g.setColor(Color.MAGENTA);
g.fillRect(1920/2-x,720-100+y, 50, 50);
}
}
}
Mein Ziel Eine externe Klasse um paintComponent zu erstellen ist, dass ich eine Komponente daraus für die zukünftige Schlüsselbindung machen kann.
Es macht mich verrückt! Ich habe auf dieser Seite gesucht und finde nichts! Wenn mir jemand die Ursache und die Lösung kann sagen, ich würde sehr dankbar it :)
Dies wird durch die Art und Weise meine Hauptklasse ist
package SS;
import javax.swing.JFrame;
public class mainframe {
public static void main(String[] args){
JFrame mainFrame = new JFrame();
mainFrame.setBounds(0, 0, 1920, 720);
mainFrame.setResizable(false);
mainFrame.getContentPane().add(new objects());
mainFrame.setDefaultCloseOperation(mainFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
}
}
Ich bin offen für Kritik und richtige Formulierung für alles, was ich in diesen Worten Post.
einfach iterieren, was ich meine: ich die Grafiken, die ich aus meiner Methode paintcomponent zum JPanel als jp aufgelistet hinzufügen möchten, dann ist das JPanel meinem Rahmen in der Klasse mainframe hinzufügen
Auch Entschuldigung Wenn ich etwas verpasst habe, ist dies mein erster Post in StackOverflow.
Ich habe versucht, den Code über das Textformat hinzufügen, aber es ließ mich nicht hinzufügen, so habe ich Screenshots. Es tut uns leid! – eyelikeboats
Willkommen bei StackOverflow! Die Veröffentlichung von Bildern Ihres Codes wird nicht empfohlen, da Links in der Zukunft tot sein können und sie im Allgemeinen schwerer lesbar machen. Es wäre gut, wenn Sie Ihren Code direkt mit den Codeblöcken in die Antwort schreiben könnten. EDIT: Nur Ihren Kommentar oben gesehen. Welche Fehler bekommen Sie beim Versuch? –
In Zukunft müssen Sie Code als Code und nicht als Bilder anzeigen. Wir können Bilder nicht in unsere IDEs kopieren und sie ausführen. Wenn die Seite Ihnen sagt, dass der Code zu groß ist, dann kürzen Sie ihn, aber stellen Sie sicher, dass er immer noch kompiliert und für uns läuft, ein [mcve]. Sehen Sie sich die Abschnitte zur [Hilfe] an. –