如何使用方向键替代ButtonListeners实现滑动功能?
原按钮触发实现代码
原本通过为JButton绑定ActionListener,点击对应按钮时调用滑动函数:
public void setUpButtonListeners() { ActionListener buttonListener = new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { Object o = ae.getSource(); if ((o == slots[3][1]) || (o == slots[3][2])) { slideDown(slots); } else if ((o == slots[0][1]) || (o == slots[0][2])) { slideUp(slots); } else if ((o == slots[1][3]) || (o == slots[2][3])) { slideRight(slots); } else if ((o == slots[1][0]) || (o == slots[2][0])) { slideLeft(slots); } } }; slots[3][1].addActionListener(buttonListener); slots[3][2].addActionListener(buttonListener); slots[0][1].addActionListener(buttonListener); slots[0][2].addActionListener(buttonListener); slots[1][3].addActionListener(buttonListener); slots[2][3].addActionListener(buttonListener); slots[1][0].addActionListener(buttonListener); slots[2][0].addActionListener(buttonListener); }
需求
无需点击屏幕上的JButton触发滑动逻辑,希望按下上方向键时直接调用slideUp(slots)。
解决方法
问题已解决,只需在构造函数中添加以下代码:
frame.setFocusable(true); frame.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode(); switch (keyCode) { case KeyEvent.VK_UP: slideUp(slots); break; // 补充break避免switch穿透问题 } } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } });
内容的提问来源于stack exchange,提问作者Kellen Cole
相关产品推荐
相关产品推荐

