gif Bild wird nicht dargestellt

Status
Nicht offen für weitere Antworten.
J

Justin Sane

Gast
N'Abend Allerseits

Nachdem ich mich durch zig Foren gewühlt hab und auch Google mir nicht helfen konnte mit meinem Problem, hoffe ich mal das mir hier jemand weiterhelfen kann.
Im Grunde ist das ganze für die Programmierung einer/s Slot Machine/einarmigen Banditen.
Aber das eigentliche Problem besteht darin das ich wenn ich mir im Applet eine .gif Animation anzeigen lassen will,
diese nur für den Bruchteil einer Sekunde sichtbar ist und dann wieder verschwindet.
Ich bin noch nicht wirklich fit in Java und brauche das für ein Projekt in der Schule, aber aus meinem Kurs bin ich noch der Beste, weshalb ich so Niemanden habe an den ich mich wenden kann.

Code:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.Arrays;

public class Bandit1 extends Applet implements ActionListener {
	Button BStart = new Button("Start");
	Button BStop = new Button("Stop");
	TextField TBestand = new TextField("15", 5);
	TextField TWalze1 = new TextField(5);
	TextField TWalze2 = new TextField(5);
	TextField TWalze3 = new TextField(5);
	int z1;
	int z2;
	int z3;
	Image IBar1;
	Image IBar2;
	Image IBar3;
	Image ICherry1;
	Image ICherry2;
	Image IFan7;
	Image IRed7;
	Image IWalze;
	Image ITabelle;

	
	public void init(){
		add(TBestand);
		add(BStart);
		BStart.addActionListener(this);
		add(BStop);
		BStop.addActionListener(this);
		add(TWalze1);
		add(TWalze2);
		add(TWalze3);
		IBar1=getImage(getCodeBase(),"Bars1.jpg");
		IBar2=getImage(getCodeBase(),"Bars2.jpg");
		IBar3=getImage(getCodeBase(),"Bars3.jpg");
		ICherry1=getImage(getCodeBase(),"Cherry1.jpg");
		ICherry2=getImage(getCodeBase(),"Cherry2.jpg");
		IFan7=getImage(getCodeBase(),"Fantastic7.jpg");
		IRed7=getImage(getCodeBase(),"Red7.jpg");
		IWalze=getImage(getCodeBase(),"Walze.gif");
		ITabelle=getImage(getCodeBase(),"Tabelle.jpg");
		Graphics g=getGraphics();
		g.drawImage(IBar1,0,0,115,183,this);
		g.drawImage(IBar2,0,0,115,183,this);
		g.drawImage(IBar3,0,0,115,183,this);
		g.drawImage(ICherry1,0,0,115,183,this);
		g.drawImage(ICherry2,0,0,115,183,this);
		g.drawImage(IFan7,0,0,115,183,this);
		g.drawImage(IRed7,0,0,115,183,this);
		g.drawImage(ITabelle,0,0,144,296,this);
		g.drawImage(IWalze,0,0,this);
	}
	

	public void actionPerformed(ActionEvent knopfdruck){
		if (knopfdruck.getSource()instanceof Button)
		   {
			String Beschriftung=knopfdruck.getActionCommand();
				if (Beschriftung=="Start"){				
					String alterbestand1=TBestand.getText();
				    Double alterbestand2=new Double(alterbestand1);
				    double alterbestand3=alterbestand2.doubleValue();
				    Double neuerbestand1=new Double(alterbestand3 - 1);
				    String neuerbestand2=neuerbestand1.toString();
				    TBestand.setText(neuerbestand2);				    
					Graphics g=getGraphics();
					g.drawImage(IWalze,0,0,this);
				}


Keine Ahnung woran's liegt, kann man das vielleicht nicht mit drawImage machen?
Hab's mit den Befehlen auch schon mal in ein anderes Applet kopiert in der Vermutung der Fehler könnte wo anders liegen, aber selbes Ergebnis.

Ach ja ich benutze Eclipse und aus irgendeinem mir unerfindlichen Grund muss ich unter public void init() die Bilder schonmal zeichnen lassen (wobei sie aber nicht gezeichnet werden sondern irgendwie nur geladen) damit sie später bei Klick auf den Button direkt gezeichnet werden und nicht erst nach zweimaligem Klicken.
Und wenn ich da das gif Bild lade, kann ich später bei Klick auf den Button auch die jpg's nicht mehr darstellen lassen die verschwinden dann auch sofort wieder.
 

Fu3L

Top Contributor
So weit ich weiß, ist getGraphics() meist "böse" :wink:

Ruf bei Veränderungen am besten repaint() auf und überschreib die paint()-Methode (bei JApplets paintComponent()) und zeichne nur dort (mit dem Graphics-objekt, das beide Methoden als Parameter erhalten), oder übergib das grahpics-objekt an andere Methoden, die das dann zum Zeichnen benutzen....
 
J

Justin Sane

Gast
öhm, Danke schonmal, das ist wenigstens schonmal ein Ansatz. :)
Aber auch wenn es ein wenig bettelnd sein mag, wie müsste das denn beispielsweise Aussehen?
Wir haben bisher leider immer nur mit getGraphics() gearbeitet und ich weiß ich könnte zwar in der Java Dokumentation von Sun nachschauen
aber da hab ich ja auch nur einzelne Befehle und kein Gerüst wie diese zusammenwirken oder ich hab es zumindest immer übersehen ^^
 

Fu3L

Top Contributor
Ich kopier mal ein bisschen was aus Programmen, die ich schon geschrieben hab (normale GUIs sind beim Zeichnen einem Applet ja sehr ähnlich, das kann eigentlich so übernommen werden (bei AWT-Anwendungen genauso nur halt nicht paintComponent() sondern paint() überschreiben)):

Code:
public void paintComponent(Graphics g) {
		
		super.paintComponent(g);
		setBackground(new Color(0,0,0));
		g.setColor(Color.BLUE);
		g.setFont(new Font(g.getFont().getFamily(), Font.PLAIN, 20));
		
		//Die Punktzahl ausgeben
		g.drawString(Integer.toString(points), 20, HEIGHT - 10);

		//Den Spieler zeichnen
		g.drawImage(playerPic, player.posX, player.posY, playerPic.getWidth(), playerPic.getHeight(), this);

}

Das ist jezz ein Teil der paintComponent() aus einem SpaceInvaders-Klon den ich zusammengebastelt hab. Du siehst, ich rufe erst paintComponent() für die Basisklasse auf (3), dann änder ich die Hintergrundfarbe des Panels, auf dem ich zeichne(4) und dann arbeite ich mit dem Graphics-objekt (Schriftfarbe und Schriftform festlegen (5,6) und dann einen String zeichnen und danach ein Bild)

Im GameLoop wird dann am Ende jedes Durchlaufs, also immer wenn sich etwas an der Position der Objekte geändert haben könnte, repaint() aufgerufen:

Code:
while(gameRunning) { //<---GameLoop
				
				doLogic(); //<--- Hier werden die Objekte bewegt
				
				repaint(); //<--- und hier wird die GUI zum Neuzeichnen angeregt

Du kannst in paintComponent() auch andere Methoden aufrufen und denen das Graphics-Objekt mitgeben. Zum Beispiel, wenn du eine Anzahl von Objekten im Spiel und diese zB in einem Array gespeichert hast, die alle gezeichnet werden müssen, kannst du das Array durchlaufen und für jedes Objekt (auch Sprite genannt) ganz einfach dessen Zeichenmethode aufrufen:

Code:
for(Sprite s : sprites) { //<--- Über das Array sprites iterieren

s.drawObject(g); //<--- Hier der Methode drawObject() der Klasse Sprite das Graphics Object mitgeben

}

Die Klasse Sprite enthält dann u.A. folgende Methode:

Code:
public void drawObject(Graphics g) {
		
		g.drawImage(pics[currentPic], (int) x, (int) y, null); //<--- Hier das Object zeichnen
// (x,y und pics sind member der Klasse, in der drawObject() definiert ist)
		
}

So das war jezz etwas Holz, aber für dich reichen wahrscheinlich erstma die oberen beiden Beispiel...
 
J

Justin Sane

Gast
so... hat leider ein wenig gedauert bis ich die Zeit gefunden habe den Vorschlag umzusetzen.

paintComponent() konnt ich nich nehmen da hab ich erst die Fehlermeldung
The method paintComponent(Graphics) is undefined for the type Applet
bekommen und dazu den Vorschlag ich sollte das doch in paintComponents() ändern, wenn ich dann aber das Applet gestartet hab wurde nichts gezeichnet.
Als ich dann paint() stattdessen verwendet hab, hat zumindest schonmal das Anzeigen des GIFs funktioniert. :)

Jetzt hab ich aber das Problem das ich mein GIF nicht mit 'nem anderen Bild übermalen kann.
Ich wollte einfach ein JPG drüber malen lassen was einer angehaltenen Walze entsprechen sollte.
Wahrscheinlich liegts aber daran das ich das einfach wieder mit getGraphics() machen wollte ^^

Kann ich mir verschiedene paint() Methoden schreiben die dann zu bestimmten Zeitpunkten aufgerufen werden können?
Was mich dazu bringt: Wie muss ich es machen das mein GIF erst auf Knopfdruck gezeichnet wird?
Das läuft ja alles ein bisschen anders als mit getGraphics()
 
G

Guest

Gast
Oh Verzeihung :lol:
Kannte bisher einfach nur Applets und wusste nich das es da 'nen Unterschied gibt :oops:

Aber das was ich machen will lässt sich auch mit nem normalen Applet realisieren, hoffe ich?
 

Ebenius

Top Contributor
Ja. Das hat damit nichts zu tun. paint() ist genau richtig bei einem AWT Applet (also das ohne 'J').

Du kannst in der selben paint()-Methode einfach über das andere Bild malen. Allerdings ist JPG idR dazu nicht geeignet, da es keine Transparenz unterstützt. Hier also besser PNG benutzen. Speicher doch mal dieses PNG ab (Quelle: PNG transparency test) und probier es mal damit.

// EDIT: Da hab ich ja vorhin gar nicht richtig gelesen. Du willst per Knopfdruck das zweite Bild ein-/ausschalten. Fang so an:
Code:
public void paint(Graphics g) {
  super.paint();
  g.drawImage(...); // dein erstes Image immer
  if (secondImageVisible) {
    g.drawImage(...); // dein zweites Image manchmal
  }
}

Und irgendwo anders im Code der selben Klasse hast Du stehen:
Code:
private boolean secondImageVisible = false;

Und noch irgendwo anders im Code der selben Klasse hast Du sowas:
Code:
public void setSecondImageVisible(boolean visible) {
  if (secondImageVisible != secondImageVisible) {
    secondImageVisible = visible;
    repaint();
  }
}

Wird's klar?

Grüße, Ebenius
 
J

Justin Sane

Gast
Jap, Perfekt!
Jetzt läuft es genauso wie ich es mir vorgestellt hab =)
Damit sind all meine Probleme gelöst, vielen Dank! :D

Danke für die schnelle und gute Hilfe, hab jetz meinen kleinen Java-Horizont etwas erweitern können :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
M Bild wird von JFrame nicht geladen Java Basics - Anfänger-Themen 12
Y Nach Bild-Upload wird Bild nicht angezeigt Java Basics - Anfänger-Themen 1
J Bild auf JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 11
M Bild in JFrame wird nicht angezeigt Java Basics - Anfänger-Themen 6
A Bild wird auf Frame nicht angezeigt! Keine Fehlermeldung Java Basics - Anfänger-Themen 3
E Pfad zu einem gif-Bild wird zur Laufzeit nicht gefunden Java Basics - Anfänger-Themen 5
C Bild wird nicht mehr gefunden Java Basics - Anfänger-Themen 2
S Bild wird auf Canvas nicht angezeigt Java Basics - Anfänger-Themen 8
A warum wird das bild nicht angezeigt? Java Basics - Anfänger-Themen 4
G Bild wird nicht neu gezeichnet - finde den Fehler nicht Java Basics - Anfänger-Themen 3
B Panel mit Bild wird nicht angzeigt Java Basics - Anfänger-Themen 16
C Bild wird nicht gezeichnet Java Basics - Anfänger-Themen 3
G Bild wird im falschen Frame angezeigt Java Basics - Anfänger-Themen 5
E Bild wird immer neu gemalt Java Basics - Anfänger-Themen 8
S Bild wird bei Start nich angezeigt Java Basics - Anfänger-Themen 2
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
H Artefact mit Bild erzeugen Java Basics - Anfänger-Themen 11
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
krgewb Bild itextpdf Java Basics - Anfänger-Themen 2
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
VPChief Bild in JEditorPane Java Basics - Anfänger-Themen 9
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
S Bild einfügen // NEU Java Basics - Anfänger-Themen 12
N Bild drehen Java Basics - Anfänger-Themen 3
S Ein Bild mit dynamischer Quelle neuzeichnen Java Basics - Anfänger-Themen 12
N GLOOP Bild nicht ansichtbar Java Basics - Anfänger-Themen 5
M Bild in JFrame Java Basics - Anfänger-Themen 1
B Signatur erstellen - Bild ist nur weiß Java Basics - Anfänger-Themen 0
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 17
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 1
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
S Bild über JButton legen Java Basics - Anfänger-Themen 3
B Bild mit Schrift befüllen / Anpassung bei Wortlänge Java Basics - Anfänger-Themen 2
D Google maps bild mit marker versehen Java Basics - Anfänger-Themen 12
D ImageView mit einfarbigem Bild fuellen Java Basics - Anfänger-Themen 3
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
J Bild in Button einsetzen Java Basics - Anfänger-Themen 6
S button kommt durch bild Java Basics - Anfänger-Themen 13
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
B Greenscreen (grüner Hintergrund ersetzen mit Bild) Java Basics - Anfänger-Themen 49
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
S Bild einfügen Java Basics - Anfänger-Themen 16
binop Bild anzeigen lassen Java Basics - Anfänger-Themen 2
D Bild zu Text Java Basics - Anfänger-Themen 4
I HTML Code in Bild (transparent) konvertieren Java Basics - Anfänger-Themen 0
I Watermark erstellen mit HTML in Bild? Java Basics - Anfänger-Themen 7
D Classpath Bild kann in .jar nicht geladen werden Java Basics - Anfänger-Themen 2
Anfänger2011 Bild programmieren?! Java Basics - Anfänger-Themen 3
8 Eigenes Bild in email einfügen Java Basics - Anfänger-Themen 1
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
S Bild in JOptionPane Java Basics - Anfänger-Themen 1
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
J Umgebungsvariable Programmfenster zeigt kein Bild an Java Basics - Anfänger-Themen 1
J Bild loopen Java Basics - Anfänger-Themen 6
M JFrame Bild einfügen Java Basics - Anfänger-Themen 3
S Bild bei Kontakt ändern Java Basics - Anfänger-Themen 2
C Erste Schritte Bild holen und speichern Java Basics - Anfänger-Themen 1
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
F Bild in ein Runnable Jar File packen (eclipse) Java Basics - Anfänger-Themen 2
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
J Ganzes Bild Java Basics - Anfänger-Themen 4
T GUI anstatt Bild schwarzes Rechteck gespeichert Java Basics - Anfänger-Themen 0
A Bild verschwindet! Wieso?? Java Basics - Anfänger-Themen 2
I Bild aus Bereich laden Java Basics - Anfänger-Themen 3
P Bild in JFrame Titelleiste Java Basics - Anfänger-Themen 7
M Button mit Bild und Text Java Basics - Anfänger-Themen 2
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1
Sogomn Bild will sich nicht skalieren lassen Java Basics - Anfänger-Themen 1
P Ein Bild für GUI (Java-Editor) Java Basics - Anfänger-Themen 4
D Bild für ein paar Sekunden einblenden und wieder ausblenden Java Basics - Anfänger-Themen 1
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
S Bild auf eine Position rotieren?! Java Basics - Anfänger-Themen 4
P Bild bearbeiten Java Basics - Anfänger-Themen 9
Z Datenmatrix in Bild verwandeln Java Basics - Anfänger-Themen 4
C Bild verschwinden lassen Java Basics - Anfänger-Themen 7
S Bild Icon aus ID3Tag auslesen Java Basics - Anfänger-Themen 4
E Bild vom FileChooser aus via ImageIcon in DB schreiben Java Basics - Anfänger-Themen 16
D Bild zum Panel hinzufügen Java Basics - Anfänger-Themen 8
C Greenfoot: Bei Tastendruck und best. Wert Bild ändern Java Basics - Anfänger-Themen 2
O Auflösung einer Bild-Datei bekommen ohne sie herunterzuladen?? Java Basics - Anfänger-Themen 7
L Bild-Datein "zuschneiden" Java Basics - Anfänger-Themen 11
O DeviantArt-Bild Konverter: Fehler.. Java Basics - Anfänger-Themen 16
K Transparents Bild laden -> Fehlermeldung Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben