栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java键绑定

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java键绑定

您要问的实际上是违反直觉的,并且违背了键绑定API的设计。

目的是为每个按键提供单个工作单元。在我看来,这建议您应为每个箭头键分别执行操作。

它使您更容易遵循逻辑,进行更改,根据需要规避操作。

但是我是谁呢?

如果看不到它,一种简单的方法就是为每个动作分配一个“命令”,然后在

actionPerformed
触发该动作时可以进行询问。

public TestKeyBindings02() {    JPanel panel = new JPanel();    InputMap im = panel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);    ActionMap am = panel.getActionMap();    im.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0), "RightArrow");    im.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0), "LeftArrow");    im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), "UpArrow");    im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), "DownArrow");    am.put("RightArrow", new ArrowAction("RightArrow"));    am.put("LeftArrow", new ArrowAction("LeftArrow"));    am.put("UpArrow", new ArrowAction("UpArrow"));    am.put("DownArrow", new ArrowAction("DownArrow"));}public class ArrowAction extends AbstractAction {    private String cmd;    public ArrowAction(String cmd) {        this.cmd = cmd;    }    @Override    public void actionPerformed(ActionEvent e) {        if (cmd.equalsIgnoreCase("LeftArrow")) { System.out.println("The left arrow was pressed!");        } else if (cmd.equalsIgnoreCase("RightArrow")) { System.out.println("The right arrow was pressed!");        } else if (cmd.equalsIgnoreCase("UpArrow")) { System.out.println("The up arrow was pressed!");        } else if (cmd.equalsIgnoreCase("DownArrow")) { System.out.println("The down arrow was pressed!");        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515030.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号