graphics methode zeigt mein bild nicht an

  • Themenstarter Themenstarter oO
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
O

oO

Gast
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Spiel extends JPanel
{
    public static void main(String[] Args)
    {
        new Spiel();
    }

    public Spiel()
    {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("Spiel");
        frame.setSize(800, 600);
        frame.setVisible(true);
        frame.getContentPane().setBackground(Color.white);
    }
    
    public void paint(Graphics g)
    {
        g.drawImage(Toolkit.getDefaultToolkit().getImage("a.bmp"), 0, 0, this);
        repaint();
    }
}

a.bmp ist 16bit abgespeichert worden, hierbei verstehe ich einfach nicht warum es mir mein schönes schwarzen qudadrat (a.bmp) nicht anzeigt

danke
oO
 
du kannst doch nicht in paint() repaint() aufrufen..
was passiert wohl nach einem repaint()? es wird nochmal paint aufrufen, also nochmal repaint()
was passiert wohl nach einem repaint()? es wird nochmal paint aufrufen, also nochmal repaint()
was passiert wohl nach einem repaint()? es wird nochmal paint aufrufen, also nochmal repaint()
...

wahrscheinlich kommt es nicht dazu, da kannst du dich dann aber bei Swing bedanken

--------

dein JFrame frame enthält gar kein Spiel-Panel
 
ich habe schon etwas ähnliches gedacht, doch ohne repaint() funktioniert leider genausowenig...
 
ähm, was ist jetzt deine Logik?

etwas funktioniert nicht,
dann fügst du irgendeinen Befehl ein,
danach gehts immer noch nicht,
und du magst ihn nicht wieder rauswerfen weil es ohne auch nicht geht? 😉

-------

warum es hauptsächlich nicht geht steht im vorherigen Post,
kann natürlich noch weitere Gründe haben
 
nja, so schaut es aus wenn ich am verzweifeln bin, dann hör ich kurz auf und überleg nochmal, repaint zeichnet es nochmal, es also darin zu schrieben ist katastrophal, denk eihc mal 😀... somit habe ich versucht es in den konstruktor zu schreiben, was aber auch nichts half,seitdem sitze ich an google und suche lösungshilfen, die aber nciht auffindbar sind, für mich zumindest, darum habe ich jetzt auch nebenbei diesen thread erstellt, da mir hier schonmal geholfen wurde, in einer situation wie dieser
 
Oj, als ob es keine Beispiele im Netz gäbe, wie man Bilder zeichnet :roll:

Aber eine Erklärung wieso es hier noch weitere Probleme geben wird (zusätzlich zu denjenigen, die mein Vorredner schon angesprochen hat): Toolkit.getImage lädt das Bild nicht direkt, sondern verzögert. Du bekommst praktisch ein leeres Bild, das erst mit der Zeit gefüllt wird (asynchron halt).

Mögliche Lösungen: das Bild einmal im Konstruktor laden und/oder (besser und) die ImageIO.read-Methoden, die synchron laufen, benutzen.
 
Sinnlose Endlosrekursion ist nichts Schönes, zumal die paint-Methode irgendwann beendet sein sollte, also schmeiss die Zeile 25 auf jeden Fall raus.

Dein Problem ist für erfahrene Swing-Programmierer offensichtlich. Schon mal was von add() gehört?

Im übrigen halte ich recht wenig davon, im Konstruktor eines Kindes (also JPanel) den Vater (JFrame) zu benutzen (ich gehe doch davon aus, dass du es so geplant hast, wie gesagt, ich sehe hier kein add).

Wenn dir der Groschen nicht fällt, wenn ich sage, dass die paintMethode vom Spiel Objekt (also JPanel) ist und das, von dem du definitiv nichts siehst (du siehst vieleicht was grafisches, aber garantiert kein Panel irgendeiner Art), dann empfehle ich dir Swing/AWT-mäßig die Grundlagen genauer in Erfahrung zu bringen.

Es ist wohl nicht umsonst so, dass in solchen Foren keine Hausaufgaben vorgekaut werden. Das hilft letztendlich keinem. Ich denke dass wir alle schon fast zuviel verraten haben 😉
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben