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.
1 回答
我有一个包含 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 访问