actionPerformed 不起作用
actionPerformed is not working
actionPerformed 不工作,但 KeyListener 正在工作,当我按下向上按钮时,我得到了输出。我不明白为什么 void 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) {
}
}
您忘记将您的组件(例如 this
)设置为动作侦听器,通过以下习惯用法:
frame.addActionListener(this);
有关详细信息,请参阅 documentation。
actionPerformed 不工作,但 KeyListener 正在工作,当我按下向上按钮时,我得到了输出。我不明白为什么 void 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) {
}
}
您忘记将您的组件(例如 this
)设置为动作侦听器,通过以下习惯用法:
frame.addActionListener(this);
有关详细信息,请参阅 documentation。