Wie kann man etwas von Typ Image wieder löschen?

Apfelsinenkern

Aktives Mitglied
Es ist so: Ich hab ein Programm, bei dem erst der Startbildschirm ercheint (Typ Image). Wenn ich den entsprechenden Knopf fürs Spiel drück, läuft das Spiel, aber nur im Hintergrund, das Startbild bleibt.
Dieses Startbild soll verschwinden, damit das eigentliche Spiel losgeht.
 

Volvagia

Top Contributor
Du zeichnest wohl das Image einfach über die Paint/Component. In dem Fall, musst du nur verhindern, dass das Bild gezeichnet wird. Wie hängt von deinen Projekt ab. Im einfachsten imperativen Fall setzt du eine boolean um, auf die vor dem Zeichnen geprüft wird.
 

Apfelsinenkern

Aktives Mitglied
So, hier erstmal das bisschen Code:

Java:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JPanel;
import java.awt.*;
import java.io.File;
import javax.swing.*;
 
/**
 * Class ZEICHENFENSTER - Eine Klasse, die einfache grafische Zeichnungen 
 * in einem Programmfenster ermöglicht.
 * 

 *
 * @version 2007.05.07
 */
 
public class ZEICHENFENSTER
{
    public JFrame frame;
    private CanvasPane canvas;
    private JPanel steuerungOst,steuerungSued;
    private Graphics2D graphic;
    private Color backgroundColor;
    public  Image canvasImage;
    
    
    private static ZEICHENFENSTER singleton;
 
    /**
     * Erzeugt eine Zeichenfenster mit Standardmaßen 600*500 und Hintergrundfarbe weiß 
     * @param titel  Titel des Fensters     
     */
    public ZEICHENFENSTER(String titel)
    {
        this(titel, 500, 250, Color.white);        
        frame = new JFrame();
       
    }
 
    /**
     * Erzeugt ein Zeichenfenster mit weißem Hintergrund.
     * @param titel  Fensterueberschirft
     * @param breite  Breite des Fensters
     * @param hoehe  Hoehe des Fensters
     */
    public ZEICHENFENSTER(String titel, int breite, int hoehe)
    {
        this(titel, breite, hoehe, Color.white);
        frame = new JFrame();
    }
 
    /**
     * Erzeugt ein Zeichenfenster.
     * @param titel  Fensterueberschirft
     * @param breite  Breite des Fensters
     * @param hoehe  Hoehe des Fensters
     * @param hintergrundFarbe  Hintergrundfarbe des Zeichenfensters
     */
    private ZEICHENFENSTER(String titel, int breite, int hoehe, Color hintergrundFarbe)
    {
        frame = new JFrame();
        canvas = new CanvasPane();
        canvas.setPreferredSize(new Dimension(breite, hoehe));
        frame.getContentPane().add(canvas,BorderLayout.CENTER);
        JPanel p1=new JPanel();
        p1.setLayout(new BorderLayout());
        steuerungOst = new JPanel();
        steuerungSued = new JPanel();
        //frame.addMouseListener(new Senet());
        steuerungOst.setLayout(new BoxLayout(steuerungOst,BoxLayout.Y_AXIS));
        steuerungSued.setLayout(new BoxLayout(steuerungSued,BoxLayout.X_AXIS));
        p1.add(steuerungOst,BorderLayout.NORTH);
        frame.getContentPane().add(p1,BorderLayout.EAST);
        frame.getContentPane().add(steuerungSued,BorderLayout.SOUTH);
        frame.setTitle(titel);
        backgroundColor = hintergrundFarbe;
        frame.pack();
        zeige();
    }
 
    public static ZEICHENFENSTER gibFenster()
    {
        if (singleton==null){singleton=new ZEICHENFENSTER("PAC-MAN - By Sebastian Goehring", 500, 600, Color.black);}//  836, 704, 
        singleton.zeige();

        return singleton;
        

    }
 
    /**
     * Macht das Zeichenfenster sichtbar bzw. setzt es in den Vordergrund,
     * falls es bereits sichtbar ist.
     */
    public void zeige()
    {
        if(graphic == null) {
            // nur beim ersten Aufruf wird der Hintergrund mit der Hintergrundfarbe 
            // gefuellt
            Dimension size = canvas.getSize();
            canvasImage = canvas.createImage(size.width, size.height);
            graphic = (Graphics2D)canvasImage.getGraphics();
            graphic.setColor(backgroundColor);
            graphic.fillRect(0, 0, size.width, size.height);
            graphic.setColor(Color.black);
        }
        frame.setVisible(true);
    }
 


 (...unwichtiger Part..)

  
class ViewComponent extends JComponent {
    

    public ViewComponent() {
    }

    public ViewComponent(File f) {
	this.setImage(f);
    }

    public void setImage(File file) {
	ZEICHENFENSTER.gibFenster().canvasImage = Toolkit.getDefaultToolkit().getImage(file.getAbsolutePath())
;
	
	if (ZEICHENFENSTER.gibFenster().canvasImage != null)
	    repaint();
    }

    @Override
    protected void paintComponent(Graphics g) {
	if (ZEICHENFENSTER.gibFenster().canvasImage != null)
	    g.drawImage(ZEICHENFENSTER.gibFenster().canvasImage, 0, 0, this);
    }
}
/*
 * In dieser Klasse können erstellte Bilder hochgeladen werden.
 */
 class ImageViewer  {

    private ViewComponent viewComponent = null;
    private File imageFile = null;

    public ImageViewer(String Bild) {

	imageFile = new File(Bild);
	viewComponent = new ViewComponent(imageFile);
	ZEICHENFENSTER.gibFenster().frame.add(viewComponent);

	ZEICHENFENSTER.gibFenster().frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
    }

    public static void main(String[] args) {
	ZEICHENFENSTER.gibFenster().frame.setVisible(true);
    }
    
    
}
Damit wird das Bild gezeigt:

Java:
ImageViewer image = new ImageViewer("Pacman.png");
 

Volvagia

Top Contributor
Du musst den ViewComponent natürlich per remove wieder entfernen. Findest du es sinnvoll, dich rein garnicht an die Conventions zu halten und deutsch und englisch nach Belieben zu vermischen?
 

Der Müde Joe

Top Contributor
Könntest ja im Frame einfach das Panel tauschen.
Ca so:
Java:
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class ImageFoo {

	private JFrame frame;
	private JPanel panel1;
	private JPanel panel2;

	public void init() {
		this.panel1 = new FooPanel();
		this.panel2 = new FooPanel2();

		this.frame = new JFrame();
		this.frame.setSize(300, 300);

		this.frame.getContentPane().add(panel1);
		this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.frame.setVisible(true);
	}

	public void start() {
		while (true) {
			this.frame.getContentPane().remove(panel1);
			this.frame.getContentPane().add(panel2);
			// swap panels
			JPanel temp = this.panel1;
			panel1 = panel2;
			panel2 = temp;

			this.frame.validate();
			this.frame.repaint();
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String... _) {
		ImageFoo foo = new ImageFoo();
		foo.init();
		foo.start();
	}

	static class FooPanel extends JPanel {

		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			g.drawOval(10, 10, 10, 10);
		}
	}

	static class FooPanel2 extends JPanel {

		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			g.drawRect(10, 10, 10, 10);
		}
	}
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
S Möglichkeit, mit g.draw etwas vor ein JTextfield zu „zeichnen“? Java Basics - Anfänger-Themen 7
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
schemil053 Multithread - Input verrutscht während etwas ausgegeben wird Java Basics - Anfänger-Themen 6
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
Y Wie kann man überprüfen, ob bei einem Print Befehl tatsächlich etwas geprintet wurde? Java Basics - Anfänger-Themen 4
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
B Wie kann ich etwas vor der Main-Methode ausführen? Java Basics - Anfänger-Themen 21
A Haben KNNs ein Gedächtnis, lernen etwas oder verändern sich, während sie nicht trainieren, aber aktiv sind? Java Basics - Anfänger-Themen 3
CptK Methoden While-Schleife so lange ausführen, wie Methode etwas zurückgibt Java Basics - Anfänger-Themen 2
D Etwas unsicher wie es weitergehen soll Java Basics - Anfänger-Themen 2
I In der Mitte eines Frames mit BorderLayout etwas malen Java Basics - Anfänger-Themen 7
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
A Ich habe das Gefühl etwas grundlegendes falsch zu machen Java Basics - Anfänger-Themen 6
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
F (Eclipse) Beim importieren etwas fehlerhaft bitte um Hilfe :) Java Basics - Anfänger-Themen 3
T Erste Schritte Textfeld abfragen ob etwas enthalten ist. Java Basics - Anfänger-Themen 17
O Etwas auf der Konsole ausgeben, usw. Java Basics - Anfänger-Themen 22
J Input/Output Scanner Input als etwas einsetzen Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Input/Output Prüfen wie oft etwas eingegeben wurde Java Basics - Anfänger-Themen 2
JavaNewbie2.0 Gibt meiner Meinung etwas falsches aus. Java Basics - Anfänger-Themen 7
JavaNewbie2.0 Habe ein frage wie man etwas macht. Java Basics - Anfänger-Themen 13
O Klassen etwas Bruchrechnern Java Basics - Anfänger-Themen 5
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
M Variablen Eine etwas andere if Abfrage ! Java Basics - Anfänger-Themen 10
D Etwas speichern Java Basics - Anfänger-Themen 5
L Gibt es etwas wie "HashMap <String, String, String> Java Basics - Anfänger-Themen 9
J Etwas dauerhaft überprüfen, wie ? Java Basics - Anfänger-Themen 8
A scan.nextLine() - Wenn man zu lange nichts macht, soll etwas passieren Java Basics - Anfänger-Themen 3
B Wie kann man auf das JFrame einer anderen Klasse zugreifen, etwas hinzufügen und entfernen?? Java Basics - Anfänger-Themen 3
S Komponente sagen, sie soll etwas tun Java Basics - Anfänger-Themen 3
J Für 3 Sekunden etwas bestimmtes zeichnen Java Basics - Anfänger-Themen 8
H Etwas wie sort() / sorted() in JAVA-Collections? Java Basics - Anfänger-Themen 5
S 0 wird negativ, wenn sie mit etwas negativen multipliziert wird. Warum? Java Basics - Anfänger-Themen 4
G gegen (etwas) programmieren Java Basics - Anfänger-Themen 11
Binary.Coder Vor und nach jeder Codezeile etwas einfügen Java Basics - Anfänger-Themen 3
G vor String etwas anhängen Java Basics - Anfänger-Themen 2
D Attributen und Methoden, etwas vergessen? Java Basics - Anfänger-Themen 6
T TCP, Empfang nur wenn wirklich etwas kommt Java Basics - Anfänger-Themen 6
F Etwas bestimmtes löschen Java Basics - Anfänger-Themen 13
N prüfe ob etwas in einer Matrix steht... Java Basics - Anfänger-Themen 14
S etwas schierige Ausgabe mit Systemout Java Basics - Anfänger-Themen 5
G Methode, die etwas hochzählt Java Basics - Anfänger-Themen 6
U etwas aufaddieren... acc. Java Basics - Anfänger-Themen 12
T Etwas an paint()-Methode übergeben? Java Basics - Anfänger-Themen 6
T RandomAccessFile - Wie schreibe ich etwas in eine txt Datei? Java Basics - Anfänger-Themen 5
G etwas is falsch? Java Basics - Anfänger-Themen 10
S Compile zu etwas Ausführbarem Java Basics - Anfänger-Themen 4
X Wie save ich etwas? Java Basics - Anfänger-Themen 6
R etwas andere for schleife Java Basics - Anfänger-Themen 2
G die etwas andere suche! Java Basics - Anfänger-Themen 22
M Über einen Button etwas zeichnen lassen Java Basics - Anfänger-Themen 5
L URL aufrufen und per get etwas übergeben Java Basics - Anfänger-Themen 6
K Einer Methode etwas zuweisen Java Basics - Anfänger-Themen 22
N aus einer file etwas auslesen. Java Basics - Anfänger-Themen 2
T Aus Klasse "B" in Klasse "A" etwas tun? Java Basics - Anfänger-Themen 8
G Programme etwas machen lassen. Java Basics - Anfänger-Themen 4
B Etwas in der konsole ausgeben ? Java Basics - Anfänger-Themen 7
G Programm soll nach bestimmter Zeit etwas tun Java Basics - Anfänger-Themen 24
B KeyListener (etwas bewegen) Java Basics - Anfänger-Themen 10
P Textdateischreiben, etwas fehlt noch bzw. 1 error kommt Java Basics - Anfänger-Themen 4
H in Textdateien etwas schreiben bzw. speichern Java Basics - Anfänger-Themen 2
D In String etwas einfügen. Java Basics - Anfänger-Themen 2
B Irgend etwas ist merkwürdig! brauche hilfe Java Basics - Anfänger-Themen 16
D Mein kleines Programm etwas schöner machen :-) Java Basics - Anfänger-Themen 13
G Gibt es so etwas wie eine Textfeldgruppe? Java Basics - Anfänger-Themen 2
R Dem Textfeld einer Internetseite etwas übergeben Java Basics - Anfänger-Themen 6
G Area mit Teil-Image füllen Java Basics - Anfänger-Themen 0
B Image Matching in Memory Minigame Java Basics - Anfänger-Themen 7
J JLabel bzw. Image Icon mit KeyEvent bewgen Java Basics - Anfänger-Themen 9
Butzibu Image Loader lädt nicht alle Bilder: Java Basics - Anfänger-Themen 4
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
T Image Icon Java Basics - Anfänger-Themen 3
K File (png) in Image laden Java Basics - Anfänger-Themen 3
M Image löschen Java Basics - Anfänger-Themen 2
G Image in Vordergrund Java Basics - Anfänger-Themen 3
B InputStream (PDF) nach Image (PNG / JPG) konvertieren? Java Basics - Anfänger-Themen 2
S Image Datei selektieren und in Projekt Verzeichnis abspeichern/kopieren Java Basics - Anfänger-Themen 16
N Best Practice Image recognition fuzzy Superhash berechnen Java Basics - Anfänger-Themen 1
H Image laden Java Basics - Anfänger-Themen 4
R Image drehen Java Basics - Anfänger-Themen 1
R Image Teilen Java Basics - Anfänger-Themen 3
B Image laden im GridBagLayout Java Basics - Anfänger-Themen 3
N Image von Resource wird nicht geladen Java Basics - Anfänger-Themen 2
N Datentypen Image zu Byte-Array Java Basics - Anfänger-Themen 4
F Image wird nicht gezeichent?! Java Basics - Anfänger-Themen 21
N Hintergrund image mit .setContentPane Java Basics - Anfänger-Themen 6
W aus Methode auf JLabel zugreifen und Image verändern Java Basics - Anfänger-Themen 1
S buffered image Java Basics - Anfänger-Themen 18
V Scale displayed Image via JCheckBox Java Basics - Anfänger-Themen 1
I Resize Image - Einlesen von InputStream Java Basics - Anfänger-Themen 3
M Image Download klappt nicht mehr Java Basics - Anfänger-Themen 4
Chava Testprojekt.Text.Image.Button Java Basics - Anfänger-Themen 4
S Image nach MausMotion rotieren Java Basics - Anfänger-Themen 7
L Erste Schritte Java Image und Video-Slideshow GUI Java Basics - Anfänger-Themen 3
D Kleinere Positionsangabe als einzelne Pixel bei Image? Java Basics - Anfänger-Themen 28
S Image in Panel laden Java Basics - Anfänger-Themen 12
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
V Image Crawler Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben