1

I have a frame which contains 4 different panels.One panels contains a music player which on pressing Space key start playing the music while other 3 panels contains textfields and some submit buttons.Now my problem is that while typing text in any of those textfield it's taking the input but whenever I try to give space in those textfield it's playing that music instead of typing a space in the textfield.

4

1 回答 1

2

我有一个包含 4 个不同面板的框架。一个面板包含一个音乐播放器,按空格键开始播放音乐,而其他 3 个面板包含文本字段和一些提交按钮。现在我的问题是,在任何这些文本字段中输入文本时接受输入,但是每当我尝试在这些文本字段中留出空间时,它都会播放该音乐,而不是在文本字段中输入空格。

听众只连接到音乐面板,而不连接其他任何东西

  • 将 KeyBindings 添加到 JFrame(包含 4 个 JPanel)

  • 输出应该是 Swing Action

  • 在 Swing 动作中覆盖 setEnabled

  • 将所有 JComponents(仅供用户输入)添加到数组

  • 添加 FocusListener 或所有 JComponents(仅用于用户输入)

  • 在 focusGained 上添加到数组的任何 am JComponent 都应更改

  • 但是如何才能为 Swing Action 重置 isEnabled(true),只能通过 Swing Timer


火焰战

  • 对用户不友好,完全不可能,错误的想法带有一堆副作用

  • 错了,错了,一切都错了,您无法确定任何可用作 JTextComponents、JSlider、JComboBox(也自动完成)、带有 isCellEditable(true) 的 JTable 输入字符的 KeyShortCuts

  • SPACE 也被用作 JButton(在 API 中实现的 KeyBindings)的加速器,等等......


使用 JToggleButton 而不是 JPanel,

  • 有两种状态

  • 可以不装饰,然后看起来像 JPanel(例如)

  • 使用图标,放在那里播放(停止)图标,文本,用动画 gif 看几次

  • SPACE 是加速器(在 focusGained 上)

  • 也可以从 MouseEvents 访问

于 2013-04-25T09:51:27.897 回答