2013-04-25 43 views
1

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

+1

我猜你已经连接你的关键监听到你的外板,而不仅仅是你的音乐面板? – 2013-04-25 09:13:57

+3

因此,频繁的建议使用键绑定和文档监听器。 – trashgod 2013-04-25 09:18:16

+0

收听者仅附加到音乐面板,而不是其他任何东西。 – avinash 2013-04-25 09:19:00

回答

2

我有一个包含4个不同的panels.One面板框架包含 音乐播放器上按下空格键开始播放音乐,而 其他3个小组包含文本字段和一些提交buttons.Now我 的问题是,而在任何这些文本字段中输入文本,它是 接受输入,但每当我尝试给这些文本字段中的空间 它正在播放该音乐,而不是在文本字段中键入空格。

听者只附着在音乐面板,而不是什么 其他

  • 添加键绑定到JFrame中(包含4个JPanels)

  • 输出应该是Swing Action

  • 覆盖在摇摆动作的setEnabled

  • 所有JComponent上(仅适用于用户输入)添加到阵列

  • 添加的FocusListener或所有JComponent上(仅适用于用户输入)

  • 上focusGained任何上午添加到阵列的JComponent应该被更改

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


论战

  • 而不是用户友好的,完全不可能的,错了一堆副作用

    想法
  • 错,错,一切都错了,你不能确定任何可用作JTextComponents,JSlider,JComboBox(自动完成)的输入字符的KeyShortCuts,带isCellEditable的JTable(true)

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


使用JToggleButton中代替的JPanel,

  • 具有两种状态

  • 可以是未修饰的,则看起来像作为JPanel的(例如)

  • 使用图标,放在那里玩(停止)图标,文字,看到那里几次与动画gif

  • 空间加速器(上focusGained)

  • 从MouseEvents入店太