当前位置: 首页 > 知识库问答 >
问题:

java:在不关注按钮的情况下触发KeyEvent或在多个按钮上应用关注来触发KeyEvent

彭硕
2023-03-14

我正在制作一个有按钮的鼓应用程序,作为我的鼓。我想要的是按键会在按键时触发,这样用户就可以用键盘击鼓了。

我使用按钮的keyTyped事件来使用键执行声音。它工作得很好,但首先焦点需要首先在那个特定的按钮上,因此我不能在按键时触发这些单独的按钮,因为焦点只有一个按钮。

private void btnBassDrumKeyTyped(java.awt.event.KeyEvent evt) {                                     
  if(evt.getKeyChar() == KeyEvent.VK_V){

        try{
                music=new FileInputStream(new File(bassSound));
                AudioStream audios=new AudioStream(music);
                AudioPlayer.player.start(audios);
                }
                catch(Exception e){
                    JOptionPane.showMessageDialog(null,e.getLocalizedMessage());
                }     
   }
}

我能想到的解决方案是:在表单加载时应用多个焦点(如果可能),在按键时使用不同的方式触发按钮事件(而不是通过KeyListener和KeyEvent)。

你们知道如何实现这些解决方案吗?或者如果你们有自己的解决方案,可以教我吗?谢谢大家!:)

共有1个答案

宰父衡
2023-03-14

谢谢大家!@Gorble,@camickr@MadProgrammer

是的,似乎键绑定就是确切的答案。

bassDrumAction = new AbstractAction() {
         @Override
         public void actionPerformed(ActionEvent e) {
             try{
                    music=new FileInputStream(new File("C:\\Users\\AMMUYUTAN\\Documents\\Java Specialization Course\\CS182P\\AudioSync\\src\\sound\\KickSound.WAV"));
                    AudioStream audios=new AudioStream(music);
                    AudioPlayer.player.start(audios);
                    }
                    catch(Exception ex){
                        JOptionPane.showMessageDialog(null,ex.getLocalizedMessage());
                    }
            }
        };
InputMap inputMap = btnBassDrum.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
          inputMap.put(KeyStroke.getKeyStroke("B"), "hitBassDrum");
          btnBassDrum.getActionMap().put("hitBassDrum", bassDrumAction);
 类似资料:
  • 我是一个新手,我正在尝试创建一个应用程序来在我的投资组合中使用。本质上,该程序是一个可以访问不同菜单的菜单(json文件:texas_pick.js,Breakth.js…),该程序旨在以按钮的形式显示菜单选项,按钮的详细信息从各自的json文件中检索。我面临的问题是,单击菜单选项时,会检索最后一个菜单项的数据。我将后端编程为只将商品名称和价格推送到数据库,而前端则检索这些数据并将其显示在表上。检

  • 产品简介 开发者可以通过使用此接口,将关注按钮移至顶部导航栏,方便用户更便捷的进行关注操作。 开放标准 对所有入驻小程序的企业开放 jd.showFavoriteMenu(OBJECT) 展示关注按钮(关注按钮默认不展示) OBJECT 参数说明: 参数名 类型 必填 说明 success Function 否 接口调用成功的回调函数 fail Function 否 接口调用失败的回调函数 com

  • 问题内容: 我是JavaFx的新手。在我的JavaFX应用程序中,我设置了onAction属性,当我使用鼠标按下按钮时,它可以正常工作。即使用户按下Enter on按钮,我也想触发同样的操作。我知道我可以使用偶数处理程序来做到这一点。但是,当我阅读onAction JavaDoc时,它说此事件通过按键触发。 属性说明: 按钮的动作,每当触发按钮时就会调用该动作。这可能是由于用户使用鼠标单击按钮,触

  • 所以我实际上已经阅读了关于这个的stackoverflow问题,但是它们对于使用最新版本的wordpress来说有点太老了。 我的最终目标是提交我的表单中的一些数据到数据库,但现在ajax响应对我不起作用。在WP中的自定义页面加载中,将加载所有代码,以便所有函数都应正常工作。所有这些都在PHP文件中,为什么使用echo来创建JS脚本。这是我代码的重要部分 使用WP的当前版本,所以变量ajaxurl

  • 当按钮单击时,是否有任何机制显式地触发按键事件。当我单击java UI中命名为“+”的按钮时,它将显式地触发“+”键按下事件。

  • 我正在运行一个关键帧动画在我的页面的主体元素淡入淡出背景的不透明度。淡入动画作为CSS规则直接在主体上运行,当单击特殊链接时,淡出通过为主体元素设置类来触发。该实现在Android Chrome浏览器,桌面Safari,Chrome,Firefox,IE11和Edge上运行良好。 null 我该怎么处理?我是否可以在返回时强制iOS设备重新加载页面?或者有别的办法处理?