0
我在java的一個小遊戲(RPG)上工作,我需要在不同面板中向上,向下,向左,向右移動我的角色,代表我的遊戲的每個級別。用於多個JPanels的Java swing鍵綁定
我首先使用KeyListener,這對於第一個面板工作正常,但對另一個不起作用。
我儘量讓與誰在爭論中做出與panelNumber運動的方法這項工作:(這是第一個面板唯一的工作):
private void panelSalle2KeyPressed(java.awt.event.KeyEvent evt) {
int keyCode = evt.getKeyCode();
deplacementJoueurSalle(keyCode, 2);
}
private void characterMove(int keyCode, int panelNumber){
JLabel panelCharacterSprite= new JLabel();
switch(panelNumber){
case 1:
panelCharacterSprite= characterPanel1;
break;
case 2:
panelCharacterSprite= characterPanel2;
break;
case 3:
panelCharacterSprite= imagePersoSalle3;
break;
default:
imagePerso = null;
break;
}
int x = panelCharacterSprite.getX();
int y = panelCharacterSprite.getY();
switch(keyCode) {
case KeyEvent.VK_UP:
if(y-10 >= -3){
panelCharacterSprite.setLocation(x, y-10);
}
break;
case KeyEvent.VK_DOWN:
if(y+10 <= 417){
panelCharacterSprite.setLocation(x, y+10);
}
break;
case KeyEvent.VK_LEFT:
if(x-10 >= -1){
panelCharacterSprite.setLocation(x-10, y);
}
break;
case panelCharacterSprite.VK_RIGHT :
if(x+10 <= 671){
panelCharacterSprite.setLocation(x+10, y);
}
我看到計算器,我必須使用鑰匙綁定爲使這個,但我真的不明白它的工作..它有一個機會,我可以使用keylistener工作?
Thx
請參閱[getInputMap](http://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#getInputMap-int-)和[getActionMap](http:// docs。 oracle.com/javase/8/docs/api/javax/swing/JComponent.html#getActionMap--)。 – VGR
它是如何工作的?我需要做一個「WHEN_IN_FOCUSED_WINDOW」? – barnab21
'我看到在stackoverflow,我必須使用鍵綁定'是的,因爲鍵綁定是更好的解決方案。 「有沒有機會我可以用keylistener工作?」不,因爲只有一個組件可以有焦點。這就是爲什麼總是建議關鍵綁定的原因,它不受這個限制。 – camickr