![]() |
|
|
|||||||
| AWT, Swing, JavaFX & SWT Themen zur Programmierung von Benutzer-Oberflächen (GUI, Applet) sowie zur Grafikprogrammierung (2D / 3D) |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Stammbenutzer
Viertel Gigabyte
Registriert seit: 17.01.2008
Fachbeiträge: 3.624
Abgegebene Danke: 43
Erhielt 203 Danke für 182 Beiträge
|
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);
}
}
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! |
|
|
| #2 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 21.12.2004
Fachbeiträge: 109
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
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 |
|
|
| #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... |
|
|
|
| Themen-Optionen | Thema durchsuchen |
| 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 |
|
|