Portal > Foren > Java > Allgemeine Java-Programmierung > Probleme mit dem KeyListener
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 04.07.2005, 00:10 Nach oben    #1
VipViper2000
Gast
 
Beiträge: n/a
Standard Probleme mit dem KeyListener

Ich hab schon wieder ein Problem :confused:. Und zwar läuft mein Pong Spiel soweit sehr gut und jetzt dachte ich mir, ich runde das ganze noch ein wenig mit nem Splash Screen ab, der vor dem eigentlichen Spiel angezeigt werden soll. So weit so gut. Meine main() erzeugt also ein Objekt Splash indem ich den KeyListener implementiert hab. Aber leider hört das Dingen auf keine Tastatureingaben und ich weiss einfach nicht warum. Komischerweise gehts, wenn ich aus dem JWindow ein JFrame mache und die paint() nicht überschreibe, aber seht selbst:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.imageio.*;

public class Splash extends JWindow implements KeyListener{
    
    Image splash = null;
    Image splash2  = null;
    
    private boolean endSplash = false;
    
    Splash(){
        setSize(new Dimension(356,354));
        try{
            splash = ImageIO.read(new File("pic/splash.jpg"));
            splash2 = ImageIO.read(new File("pic/splash2.jpg"));
        }catch(IOException e){}    
        
        this.setLocationRelativeTo(null);
    
        addKeyListener(this);
        
        this.setVisible(true);
        
    }
    
    public void keyPressed(KeyEvent e){
        System.out.println(e);
        if(e.getKeyCode()==10){
            endSplash = true;
            setVisible(false);
            dispose();
        }
    }
    
    public void keyReleased(KeyEvent e){}
    public void keyTyped(KeyEvent e){}
    
    public boolean endSplash(){
        return endSplash;
    }
    
    public void paint(Graphics g){
        while(!endSplash){
            g.drawImage(splash,0,0,this);
            try{
                Thread.sleep(500);
            g.drawImage(splash2,0,0,this);
                Thread.sleep(500);
            }catch(InterruptedException e){}
        }
    }
}
Hat einer eine Ahnung, warum es nicht geht? Liegen die Bilder über dem KeyListener oder was??
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.07.2005, 02:05 Nach oben    #2
Soulfly
Gast
 
Beiträge: n/a
Standard

Hast du mal versucht den Focus auf das Window zu setzen?

Correction: Hmm bei mir funkt es auch nicht, ich probier mal was aus!
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.07.2005, 03:04 Nach oben    #3
Soulfly
Gast
 
Beiträge: n/a
Standard

So ich habs raus. JWindow bietet kein Handling für KeyListener, andere aber schon. Warum weiß ich nicht.
Du musst also JFrame benutzen und dann mit setUndecorated(true); zu einen JWindow machen (also Rahmen usw weg)

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.imageio.*;
            
public class Test extends JFrame implements KeyListener, Runnable
{

	
	private static final long serialVersionUID = 1L;

	Image splash = null;

	Image splash2 = null;
        //neu
	private Thread	t;

	private boolean	endSplash = false;

	public Test()
	{
		setSize(new Dimension(356, 354));

		// neu
		setUndecorated(true);

		try
		{
			splash = ImageIO.read(new File("pic/splash.jpg"));
			splash2 = ImageIO.read(new File("pic/splash2.jpg"));
		}
		catch (IOException e)
		{
		}

		this.setLocationRelativeTo(null);

		addKeyListener(this);

		this.setVisible(true);
                //neu
		t = new Thread(this);
		t.start();
	}

	public void keyPressed(KeyEvent e)
	{
		System.out.println(e);
		if (e.getKeyCode() == 10)
		{
			endSplash = true;
			setVisible(false);
			dispose();
		}
	}

	public void keyReleased(KeyEvent e)
	{
	}

	public void keyTyped(KeyEvent e)
	{
	}

	public boolean endSplash()
	{
		return endSplash;
	}

	public void paint(Graphics g)
	{

		g.drawImage(splash, 0, 0, this);
		try
		{
			Thread.sleep(500);
			g.drawImage(splash2, 0, 0, this);
			Thread.sleep(500);
		}
		catch (InterruptedException e)
		{
		}

	}

	//neu
	public void run()
	{
		while (!endSplash)
		{
			repaint();
		}
	}
}
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme mit dem PEAR Paket HTML_Template_PHPLIB Ben PEAR, PECL und Frameworks 19 12.02.2007 10:51
Class 'xyz' not found in, Probleme mit dem include_path? Ben PHP-Programmierung 5 02.06.2006 16:44
Probleme mit KeyListener Xean Allgemeine Java-Programmierung 4 26.03.2006 19:05
Probleme mit dem Öffnen einer Consolen Anwendung T04rer Desktop-Applikationen und Grafik 1 12.07.2005 09:22
Probleme bei 2 Animated gifs gleichzeitig auf dem MAC maxpower24 Desktop-Applikationen und Grafik 2 14.08.2004 22:24


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45