2016-07-14 23 views
-2

actionPerformedは機能していませんが、KeyListenerが機能しています。ボタンを押すと出力が表示されます。私はvoid actionPerformedが動作しない理由を知りません。それは私のために一度働いた。 ##########################あなたのコンポーネント(例えばthis)を設定するのを忘れ############################actionPerformedが機能していません

import java.awt.Point; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 

import javax.swing.JFrame; 

public class Window implements ActionListener, KeyListener{ 

public static Window window; 
public static DrawWindow drawWindow; 

public Point player; 
public Point wall; 

public boolean isMovingUp = false, isMovingDown = false, isMovingLeft = false, isMovingRight = false; 

public static void main(String[] args) { 
    window = new Window(); 
} 

public Window() { 
    JFrame frame = new JFrame(); 
    frame.setSize(500, 500); 
    frame.setTitle("Test"); 
    frame.setLocationRelativeTo(null); 
    frame.setResizable(false); 
    frame.add(drawWindow = new DrawWindow()); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    frame.addKeyListener(this); 

    game(); 
} 
public void game() { 
    player = new Point(0,0); 
    System.out.println("player is created"); //working 

} 


@Override 
public void actionPerformed(ActionEvent arg0) { 

    drawWindow.repaint(); 

    if(isMovingUp == true) { 
     player.y += 1; 
     System.out.println("Moving"); //Not working 
    } 
} 

@Override 
public void keyPressed(KeyEvent g) { 
    int key = g.getKeyCode(); 
    if(key == KeyEvent.VK_UP) { 
     isMovingUp = true; 
     System.out.println("arrow up is pressed, isMovingUp = true"); //Working 

    } 
} 

@Override 
public void keyReleased(KeyEvent g) { 

} 

@Override 
public void keyTyped(KeyEvent arg0) { 

} 

}

+3

あなたはactionlistnerをどこに追加しましたか? –

答えて

2

アクションリスナーとして、次のようなイディオムを通じて:

frame.addActionListener(this); 

詳細についてはdocumentationを参照してください。

関連する問題