• Advertisement

Archived

This topic is now archived and is closed to further replies.

[java] How to use the arrow key?

This topic is 6410 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Ok, i know sond as a basic question, but how do i use the arrow key? I been able to use the arrow key on the numric keypad...but its not the best. Here gow i do it private void keyPressMove(Object source, KeyPressEvent e) { char key = (char)e.getKeyChar(); MoveKey.setText("" + key); String keyP = MoveKey.getText(); if (keyP.equals("4")) { MoveLeft(); } if (keyP.equals("6")) { MoveRight(); } } It as worked, but it is anoying to use it this way...also when i use the normal arrow key it make it imposible to use any hother key! Please post the source code! (if you can) Help me!!!!! PS-Im not sure this is important but I use VJ++ 6 Delisk

Share this post


Link to post
Share on other sites
Advertisement
I personally like to use the KeyEvent constants such as KeyEvent.VK_UP in a switch statement. I think it is VK_UP but what ever it is it saves you the effort of converting the char to a string and comparing the results. You can also use the ascii numbers for alpha characters and cast them to ints for switches. Here is a sample -

public void keyTyped(final java.awt.event.KeyEvent p1) {
switch( (int)p1.getKeyChar() ) {
case( (int)''s'' ):
sholder = ( sholder + 5 ) % 360;
glc.getContext().makeCurrent();
glc.getContext().unlock();
glc.repaint();
break;
case( (int)''S'' ):
sholder = ( sholder - 5 ) % 360;
glc.getContext().makeCurrent();
glc.getContext().unlock();
glc.repaint();
break;
case( (int)''e'' ):
elbow = ( elbow + 5 ) % 360;
glc.getContext().makeCurrent();
glc.getContext().unlock();
glc.repaint();
break;
case( (int)''E'' ):
elbow = ( elbow - 5 ) % 360;
glc.getContext().makeCurrent();
glc.getContext().unlock();
glc.repaint();
break;
case( (int)''r'' ):
rotator = ( rotator + 5 ) % 360;
glc.getContext().makeCurrent();
glc.getContext().unlock();
glc.repaint();
break;
case( (int)''R'' ):
rotator = ( rotator - 5 ) % 360;
glc.getContext().makeCurrent();
glc.getContext().unlock();
glc.repaint();
break;
}
}

Share this post


Link to post
Share on other sites
Whipping out my trusty jdk online doc I can positively say that you''d need to do something like this:

The Java > 1.1 way.
    

public class MyClass implements java.awt.event.KeyListener
public void keyPressed(java.awt.event.KeyEvent e)
{
//The source Object exists but only inside KeyEvent

Object source = e.getSource();
//Each key has a unique key code

int key = e.getKeyCode();
//Do something based on which key was pressed

switch(key)
{
case KeyEvent.VK_UP:
break;
case KeyEvent.VK_DOWN:
break;
}
}
//Have to include these other methods from interface KeyListener

//even though you don''t do anything with them

public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}

} //End MyClass



That should get you going. On a side note: There''s a lot of stuff in the Java AWT that follows the interface pattern, get to know it

joeG

Share this post


Link to post
Share on other sites

  • Advertisement