我JFileChooser在我自己的框架中嵌入了一个框架中的其他自定义组件.这是我的应用程序的设计,因为它可能有助于可视化我的问题:

如果你不能说,JFrame标题下面的列表是JFileChoosers.这应该是有效的方法是您为目标分配快捷方式,然后当您按下这些快捷键时,所选文件将移动到目标.
我这样做的策略是将快捷方式分配给一个javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW范围InputMap的整个框架.
但令人讨厌的是,某些东西(我假设JFileChooser)继续响应/吸收我不想要的按键.例如,如果我按下Ctrl+C我的快捷键操作则不会运行.我尝试了本机外观(我使用的是Windows 7)和默认的L&F,两种情况都有同样的问题.我认为它可能正在尝试对所选文件进行复制操作,JFileChooser因为如果我点击其中一个按钮强制它失去焦点,突然我的Ctrl+C命令就完成了我的操作.
但是,我不确定这JFileChooser是怎么回事.当我调用getKeyListeners()它时,它返回一个空数组.我也尝试在所有三个范围内清除这个组合键的输入映射,它似乎仍然吸收了按键.
任何人都可以给我一些使JFileChooser忽略的示例代码Ctrl+C吗?此外,如果有人能告诉我将来如何调试这样的问题,那将会很有帮助.
这是我到目前为止尝试过的一些代码.您也可以使用它来尝试自己测试,因为此代码编译并运行,原样:
package com.sandbox;
import javax.swing.*;
import java.awt.event.ActionEvent;
public class Sandbox {
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("control C"), "println");
panel.getActionMap().put("println", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
System.out.println("The JPanel action was performed!");
} …Run Code Online (Sandbox Code Playgroud) 最近提出的一个问题是:如何在详细信息视图中启动JFileChooser? 和答案做这件事提供了一个很好的技术.
我想在此提出的愿望一层:因为我现在知道如何打开JFileChooser中的详细信息视图,我也把它用日期排列的文件打开?我知道用户当然可以点击标题,但有没有办法在代码中实现这一点?