所以我的程序中的所有内容都可以工作,除了鼠标和键盘监听器。 我有一些关于Jbuttons的actionListeners正在做我正在尝试做的事情,但是作业说它必须与所有三个一起工作。 所以我想知道为什么编译,但不起作用。我做错了吗?
panel.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_UP){
shape.addSides();
}
if(e.getKeyCode() == KeyEvent.VK_DOWN){
shape.subSides();
}
}
@Override
public void keyReleased(KeyEvent e) {
}
}
);
panel.addMouseListener(new MouseListener(){
@Override
public void mouseEntered(MouseEvent e){
if(e.getButton() == MouseEvent.BUTTON1){
shape.addSides();
}
if(e.getButton() == MouseEvent.BUTTON3){
shape.subSides();
}
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}
);
答案 0 :(得分:3)
关于KeyListener:除非被监听的组件是可聚焦的并且具有焦点,否则它将不起作用。因此,您需要在JPanel上调用setFocusable(true)
和requestFocusInWindow()
。至于MouseListener - 其他东西可能会捕获鼠标事件并阻止它到达你的JPanel。要对此进行调试,您需要发布minimal, compilable, runnable example program。
另外关于你的MouseListener,你在mouseEntered事件中检查getButton()
是没有意义的。按钮不参与此类事件。您是否意味着要检查MouseMotionListener的mouseDragged(...)
?