Je suis en train de tester certaines choses avec j3d et je ne peux pas sembler obtenir un keylistener à travailler pour un BasicConstruct. Il ne fait rien quand j'appuie sur ay de la touche 38 (haut), pas même la sortie de débogage à la console. Voici une partie de ma classe principale "BasicConstruct". ici est où il devrait enregistrerons:Java keyListener ne fonctionne pas sur BasicConstruct
@SuppressWarnings("deprecation") //for the bc.show(true);
public static void main(String[] argv) {
bc = new BasicConstruct();
bc.setTitle("3D Rendering");
bc.setSize(500, 500);
bc.setLocationRelativeTo(null);
bc.setDefaultCloseOperation(EXIT_ON_CLOSE);
bc.refresh(addBox(0f, 0f, 0f, 0.005f, 0.5f, 0.5f,
new Color3f(1, 0, 0), new Color3f(1, 0, 0))); //draws a box on screen. not relevant to the queston
bc.setFocusable(true);
bc.addKeyListener(new PopClickListener());
bc.addDirectionalLight(new Vector3f(0f, 0f, -1f), new Color3f(1f, 1f, 0f));
bc.finalise(rootBranchGroup);
bc.show(true);
}
et la classe PopClickListener (havent pris la peine de le renommer):
import java.applet.Applet;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
import javax.vecmath.Color3f;
public class PopClickListener extends Applet implements KeyListener {
/**
*
*/
private static final long serialVersionUID = 1L;
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 38){
BasicConstruct.placeblockonscreen(BasicConstruct.bc, randInt(.1f, 0f),
randInt(1f, 0f), randInt(.1f, 0f), randInt(.1f, 0f), randInt(.1f, 0f),
randInt(.1f, 0f), new Color3f(10, 10, 10), new Color3f(10, 10, 10));
System.out.println("hey"); //debug
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public static float randInt(float min, float max) {
Random rand = new Random();
float finalfloat = rand.nextFloat() * (max - min) + min;
return finalfloat;
}
}
J'ai changé de 39 à KeyEvent.VK_UP et cela a fonctionné ... jusqu'à ce que vous le déplaciez. puis il arrête d'écouter l'événement clé –
l'a finalement obtenu. J'avais besoin d'ajouter l'écouteur clé au canevas au lieu du basicconstruct. Avant, je pensais que vous ne pouviez pas ajouter des listes sur la toile: P merci pour votre aide tenny! –