java - Swing : Focus Components

标签 java swing focus

我有一个包含 CardLayout 的框架,其中各种 JPanel 将其设置为 JFrame 的中心。

在第一个面板上,我专注于第一个组件,即按钮。但不能将注意力集中在其他面板或组件上。在设置所需的面板时,我使用以下代码:

public void SetMainPanel(String panel) {
    activePanel = panel;
    SetFontSize();
    cards.show(mainPanel, panel);
    mainPanel.revalidate();
    mainPanel.repaint();
    mainPanel.requestFocusInWindow();
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            mainPanel.grabFocus();
            mainPanel.getComponent(0).requestFocus();
        }
    });
    //mainPanel.getComponent(0).requestFocusInWindow();
}

但我无法将注意力集中在面板或其第一个组件上。我怎样才能让设置面板专注于它的第一个组件?最后,为了专注于每个面板,更好的是 - FocusPolicy、Manager、Keyboard...。面板要么具有所有按钮,要么具有表格和按钮,要么具有带字段的表单。有这 3 种类型的面板。 顺便说一句,添加到 cardLayout 的面板是可聚焦的。

任何想法....

编辑:代码已被编辑,如 mKorbel 所示。

最佳答案

您应该能够将 ComponentListener 添加到面板并处理 componentShown() 事件以将焦点放在您想要的任何组件上。

Card Layout Focus默认情况下扩展 CardLayout 以提供此功能。

关于java - Swing : Focus Components,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432580/

相关文章:

java - 如何创建这样的 Java swing UI?

Java - 有没有一种快速的方法可以用其他颜色替换某些颜色位图中的所有实例?

java - VerifyInputWhenFocusTarget 属性无效

c# - 键盘焦点到 DataGrid

java - IE WebDriver 异常无法更改只读元素的值

java - 将 JQuery 与 Richfaces 集成

java - 使用 OOP 将 Jpanel 转换为图像

生成密码输入框的 jQuery 模糊和焦点问题

多个参数的Java流averagingInt

java - 缺少 cxf.xml?在 Maven 中失败,在 Eclipse 中工作