Java 使用JFileChooser中的KeyEvent.VK_输入

Java 使用JFileChooser中的KeyEvent.VK_输入,java,swing,Java,Swing,我有一个带有某些JComponents(例如JPanel)的应用程序,它们能够在InputMap/ActionMap的帮助下处理KeyEvent.VK_ENTER 这很好,但有一个例外:如果我有一个JFileChooser来选择一个文件,并且我用from键盘完成了这个选择,那么这个按键事件将传递给我的应用程序的下一个活动JPanel。文件选择工作正常,但按下/释放/键入enter的事件被转发,因为在此面板上执行了与该面板上的KeyEvent.VK_enter相关的操作!如果我通过鼠标完成JFil

我有一个带有某些JComponents(例如JPanel)的应用程序,它们能够在InputMap/ActionMap的帮助下处理KeyEvent.VK_ENTER

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

如何在JFileChooser上使用这样的KeyEvent?我试图在覆盖JFileChooser的类上建立一个键绑定,但这不起作用。我在此处添加此部分的代码:

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

但它从来没有达到“做点什么…”

我不认为问题出在文件选择器上,但是对话框的根窗格开始被文件选择器使用。谢谢你的回答!但是我看不到任何根窗格,因为JFileChooser是类中的私有att。而且它没有添加到任何容器中。我只是通过showOpenDialog()或showSaveDialog()使用它。如果调用fc.getRootPane(),则得到一个空值。还是说内容窗格?