【问题标题】:Java JTable shortcuts not workingJava JTable 快捷方式不起作用
【发布时间】:2017-11-07 16:16:20
【问题描述】:

这是我第一次使用 JTable,我遇到了问题。 我一直在用这样的主要方法测试我的 JTable:

public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new JFrame(APP_TITLE);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                FileManager fileManager = new FileManager();
                f.setContentPane(fileManager);

                f.setIconImage(Icons.SOFTWARE_ICON.getImage());

                f.pack();
                f.setLocationByPlatform(true);
                f.setMinimumSize(f.getSize());
                f.setVisible(true);
            }
        });
    }

一切都很完美。我可以按快捷键(UP、DOWN 和 CTRL+A),它们都可以工作。

但现在我已经像这样将 FileManager (JPanel) 添加到我的 UI (JFrame) 中:

public FileManager fMan = new FileManager();

[...]

JSplitPane splitPane = new JSplitPane();

splitPane.setLeftComponent(fMan);

现在,我注意到两件事:

  • 快捷方式不起作用

  • 选择时颜色不会自动反转

我尝试请求焦点改变主题,但都没有帮助。 ????

【问题讨论】:

  • 尝试找到焦点所在的位置。它显然不在桌面上,你认为它就在那里。
  • getMostRecentFocusOwner().getClass() 返回 javax.swing.JTable
  • 运行应用程序。检查焦点。使用制表键
  • 在 Windows 7 上使用 JDK8 对我来说效果很好。发布您的 minimal reproducible example 来证明问题。请注意使用基本表进行的第一次测试:splitPane.setLeftComponent( new JScrollPane( new JTable(3,5) ) ); 。一旦你得到这个工作,然后尝试你的自定义表。这样你就会知道问题是你的表还是JDK表。
  • 好的,我按照你说的做了,还是不行,我会尽快发个例子

标签: java swing jtable shortcut


【解决方案1】:

经过 5 个多小时的尝试解决这个问题,我终于可以自豪地说我找到了答案

一个子类使用了这个代码:

KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {

            @Override
            public boolean dispatchKeyEvent(KeyEvent ke) {
            }

        });

这会导致 JTable 无法正确接收输入。

哦,好吧! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2012-08-20
    • 2017-05-24
    • 2014-06-01
    • 2015-05-07
    • 2014-12-19
    • 2015-04-15
    相关资源
    最近更新 更多