You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用方向键替代ButtonListeners实现滑动功能?

用方向键替代JButton触发滑动操作的实现

原按钮触发实现代码

原本通过为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:45:41