java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > AWT, Swing, JavaFX & SWT

AWT, Swing, JavaFX & SWT Themen zur Programmierung von Benutzer-Oberflächen (GUI, Applet) sowie zur Grafikprogrammierung (2D / 3D)

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 01.02.2008, 19:41   #1 (permalink)
hdi
Stammbenutzer
Viertel Gigabyte
 
Benutzerbild von hdi
 
Registriert seit: 17.01.2008
Fachbeiträge: 3.624
Abgegebene Danke: 43
Erhielt 203 Danke für 182 Beiträge
Standard keylistener funktioniert nicht

hallo,
ich habe versucht an hand eines beispiels von ariol einen keylistener in mein programm einzubauen, allerdigns funktioniert er nicht.

hier ist der code:

Code:
import javax.swing.JComponent;
import java.awt.Graphics;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Label;
import java.awt.FlowLayout; 
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class View extends JFrame{
	
	private GraphicsPanel panel;
	private Label label;
	
    public void sleep(long millis) {
	try {Thread.sleep(millis);} catch (Exception e){}
    }

	public View(Worm w){
		super();
		setLayout(new FlowLayout());
      	setDefaultCloseOperation(EXIT_ON_CLOSE); 

        panel = new GraphicsPanel(this, w);
        panel.setPreferredSize(new Dimension(Data.HOR_RES, Data.VER_RES));
      	add(panel);
      	
      	label = new Label();
      	add(label);

      	setFocusable(true);
      	pack();
      	setVisible(true);
	}
}

class GraphicsPanel extends JPanel implements KeyListener{
	
	private Worm w;
	private View v;
	
	/**
	 * @Override
	 */ 
	protected void paintComponent(Graphics g){
		super.paintComponent(g);
     	w.draw(g);
	}
	
    public void keyPressed(KeyEvent e)
    {
         System.out.println("taste gedrückt."); // <--------------------- erscheint nicht.
         int key = e.getKeyCode();
         if (key == KeyEvent.VK_UP){
            w.move(Data.UP);
            v.repaint();}
         else if (key == KeyEvent.VK_RIGHT){
            w.move(Data.RIGHT);
            v.repaint();}
         else if (key == KeyEvent.VK_DOWN){
            w.move(Data.DOWN);
            v.repaint();}
         else if (key == KeyEvent.VK_LEFT){
            w.move(Data.LEFT);
            v.repaint();}
    }
	
      public void keyReleased(KeyEvent e)
      {
      }
      public void keyTyped(KeyEvent e)
      {
      }
      
	/**
	 * CONSTRUCTOR
	 */
	GraphicsPanel(View v,Worm w){
		this.v = v;
		this.w = w;
		addKeyListener(this);
	}
}
in einer anderen klasse hab ich meine main-methode, da wird lediglich eine neue Instanz von View() erstellt und das programm dann in einer endlosschleife festgehalten.

die system.out.println meldung, dass ein key gedrückt wurde, erscheint nicht, er startet ihn also irgendwie erst gar nicht?
__________________
Java Lernen leicht gemacht:
www.javavideokurs.de
Java Video Kurs - Java Video Tutorials - Online Java lernen!
hdi ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 01.02.2008, 19:52   #2 (permalink)
Stammbenutzer
Kilobyte
 
Registriert seit: 21.12.2004
Fachbeiträge: 109
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard KeyListener

Kann es daran liegen, dass das entsprechende Panel niemals den Focus hat? Wenn der Focus auf dem JPanel liegt, dann sollte auch der Listener funktionieren. Dazu müsste aber auch das Panel "focusable" sein.
__________________
Wissen ist Macht, nichts wissen macht nichts
hugo ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 01.02.2008, 20:01   #3 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von SlaterB
 
Registriert seit: 13.11.2005
Fachbeiträge: 31.675
Abgegebene Danke: 0
Erhielt 2.570 Danke für 2.531 Beiträge
und das JFrame nicht mehr, dessen Focusable scheint das JPanel zu überwiegen
__________________
Hansa wird Meister.
SlaterB ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 01.02.2008, 21:38   #4 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 19.07.2004
Fachbeiträge: 1.467
Abgegebene Danke: 8
Erhielt 56 Danke für 56 Beiträge
Solche Sachen sollten immer über InputMap und ActionMap gemacht werden, dann funktionierts auch!
Such danach im Forum, ich hab sicher schon mindestens drei mal so eine Frage beantwortet...
Niki ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 02.02.2008, 12:08   #5 (permalink)
Nicht angemeldet
 
Fachbeiträge: n/a
genau, setFocusable beim JFrame raus und beim JPanel rein.. jetzt geht es! Vielen Dank.
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Thema geschlossen    

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
KeyListener funktioniert nicht aemik Java Basics - Anfänger-Themen 7 01.10.2008 12:44
KeyListener funktioniert nicht! Ishildur AWT, Swing, JavaFX & SWT 2 09.08.2008 11:55
Keylistener funktioniert nicht richtig. Ein Gast Java Basics - Anfänger-Themen 17 28.07.2007 10:35
KeyListener funktioniert nicht ! raven AWT, Swing, JavaFX & SWT 0 13.05.2005 14:41
KeyListener funktioniert nicht Dr.Kolm Java Basics - Anfänger-Themen 10 06.03.2005 18:29


Lesezeichen

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de