keyPressed event problem

V

vertigo

Hello
i have:

class KeyHandler extends KeyAdapter
{
public void keyPressed(KeyEvent e)
{
System.out.println(e.getKeyChar());
}
}

but when i press up-arrow or down-arrow or left-arrow or
right-arrow i always receive "?" character. Why ?
I need to check what arrow i pressed. How can i do it ?

Thanx
Michal
 
B

Bjorn Abelli

...
class KeyHandler extends KeyAdapter
{
public void keyPressed(KeyEvent e)
{
System.out.println(e.getKeyChar());
}
}

but when i press up-arrow or down-arrow or left-arrow or
right-arrow i always receive "?" character. Why ?
I need to check what arrow i pressed. How can i do it ?

getKeyChar returns the *character* associated to the pressed key, but in
case of arrow keys, the "character" is really an escape sequence, hence
"unprintable".

You could use .getKeyCode() instead, and check that against the constants
representing the different keys, including the arrow keys.

http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/KeyEvent.html

(if the line above is to long and has been wrapped, try
http://tinyurl.com/3yae9 )

// Bjorn A
 
M

mromarkhan

Peace be unto you.
<code>
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class Keying extends JFrame
{
private JTextField textinput;
private JTextArea textdisplay;
public Keying()
{
textinput = new JTextField();
textinput.addKeyListener(new KeyDelegator());
textdisplay = new JTextArea();
this.getContentPane().add(textinput,BorderLayout.SOUTH);
this.getContentPane().add(textdisplay,BorderLayout.CENTER);
this.setSize(512,342);
this.setVisible(true);
}
public static void main(String [] args)
{
Keying key = new Keying();
}

class KeyDelegator extends KeyAdapter
{
public void keyReleased(KeyEvent e)
{
int keycode = e.getKeyCode();
switch(keycode)
{
case KeyEvent.VK_F1:
textdisplay.setText(textdisplay.getText() + "\nHelp Feature");
break;
case KeyEvent.VK_UP:
textdisplay.setText(textdisplay.getText() + "\nUp");
break;
case KeyEvent.VK_DOWN:
textdisplay.setText(textdisplay.getText() + "\nDown");
break;
case KeyEvent.VK_LEFT:
textdisplay.setText(textdisplay.getText() + "\nLeft");
break;
case KeyEvent.VK_RIGHT:
textdisplay.setText(textdisplay.getText() + "\nRight");
break;
}
}
}
}
</code>
Have a good day.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top