从JFileChooser消耗KeyEvent.VK_ENTER

时间:2012-11-12 04:53:22

标签: java swing

我有一个应用程序与某些JComponents(例如JPanels)能够在InputMap / ActionMap的帮助下处理KeyEvent.VK_ENTER。

这很好用,但有一个例外:如果我有一个JFileChooser来选择一个文件并且我用from键盘完成了这个选择,那么这个key-event将被传递给我的应用程序的下一个活动JPanel。文件选择效果很好,但是按下/释放/键入的输入事件被转发,因为在此面板上执行与该面板上的KeyEvent.VK_ENTER相关的操作!如果我通过鼠标完成JFileChooser,它会按预期工作,并且在下一个活动的JPanel上没有任何操作。

如何在JFileChooser上使用这样的KeyEvent?我试图在覆盖JFileChooser的类中建立一个KeyBinding,但这不起作用。我在这里添加了这部分的代码:

public myClass(String theirDir){
    fc = new FileChooser(theirDir);
    this.bindKeyToAction(fc, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true);
}// end constructor()

private bindKeyToAction(JComponent theirComp, KeyStroke theirStroke){
    InputMap localInput = theirComp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    localInput.put(theirStroke, theirStroke,.getKeyChar());

    theirComp.getActionMap().put(theirStroke.getKeyChar(), this.generateAction(new String("theCommand");
}// end bindKeyToAction

private Action generateAction(String theirID){
    final String localID = theirID;

    return new AbstractAction(theirID){
        public void actionPerformed(ActionEvent theirEve){
           do something....
        }
    };
}// end generateAction()

...
}// end myClass

但它永远不会达到“做某事......”?!?

0 个答案:

没有答案
相关问题