0

我在表格顶部嵌入了 3 个“TABS”。每个选项卡都有一个“列表”。每当我将焦点从一个选项卡更改为另一个选项卡时,我希望我的列表具有焦点。如何确保我的列表始终具有焦点?我使用 gameKeyEvents 导航。我在我的表单中添加了一个 actionListener 用于游戏关键事件。我无法覆盖表单的 keyReleased() 方法,因为我需要向我的表单添加一个动作监听器(它也包含其他命令)。

我尝试覆盖我的“选项卡”类的 keyreleased() 方法,但这不起作用(为什么??)。什么都没发生。

Tabs holder = new Tabs()
    {
        public void keyReleased(int keyEvent)
    {
    System.out.println("key release is working"); // this statement does not work
    }
      };

当我通过左右键导航来移动选项卡时,我的列表失去焦点(它们的选择显示为褪色),而在其他时候它们保持焦点(它们的选择显示为实心)。如何确保我的列表始终具有焦点?这对于我的程序正常工作非常重要。我已附上快照。请协助。

请参阅所附图片。

在图 1 中,您将看到列表项 3 突出显示。现在,如果我按下左/右/下游戏键......焦点从列表中消失并转到第三个位置的选项卡。我想防止这种情况。(无法发布图片因为我是新用户。请检查链接)

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

2

派生表单并覆盖keyReleased/keyPresed以检测游戏键右/左。

当你得到一个左右键时,永远不要调用 super(在其他情况下总是调用 super)。

在该keyPressed方法中,如果您向右/向左切换一个选项卡并调用requestFocus()相应列表的方法。

您需要从 Tabs 组件中获取选项卡按钮并将它们设置为可聚焦的 false 以防止列表失去焦点。

于 2012-02-16T06:22:49.377 回答