java - Java中有没有一种方法可以使按钮默认在点击时获得焦点

标签 java onclick click jbutton buttonclick

似乎 JButton 在单击时不会自动接收焦点,除非我使用 .setRequestFocusEnabled(true) 显式配置按钮。我正在使用的应用程序在许多不同的地方创建了很多按钮(即不是通过工厂方法),我需要所有按钮在单击时请求焦点。

是否有一种简单的方法可以更改默认行为,例如通过设置某些属性,使按钮在默认情况下请求获得焦点?或者我需要找到它们并在每个按钮上一个一个地调用 .setRequestFocusEnabled(true)

最佳答案

JButton 应该在单击时获得焦点。您可能已经修改了按钮以不执行此操作。然而,这并不能解决您的问题。

您可以在创建整个 UI 后更改您的按钮(假设在打开时未修改 GUI)- 这样一来,每个框架/对话框只需要一个调用站点:

public static class FocusHelper {
    public static void alterButtons(Component container) {
        if (component instanceof Container) {
            Component[] children = ((Container) component).getComponents();
            for (Component child : children) {
                alterButtons(child);
            }
        } else if (component instanceof JButton) {
            ((JButton) component).setRequestFocusEnabled(true);
        }
    }
}

辅助方法只是扫描整个组件层次结构以查找按钮并为每个 JButton 调用 setRequestFocusEnabled()(您可能需要检查其他组件类型,如 AbstractButton,具体取决于您想要实现的目标)。您只需从创建 GUI 的任何地方调用该方法并传递顶级容器(JFrame、JDialog 或任何其他容器组件)。

关于java - Java中有没有一种方法可以使按钮默认在点击时获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12420221/

相关文章:

JavaScript、jQuery : How to re-listen for click events

javascript - jquery点击功能聚焦于textarea?

java - 我的程序出了什么问题?它没有显示任何时钟计时器?

java - 如何在 Android NDK 中通过 JNI 调用 C 函数以 Java 字符串形式返回数据

java - Ebean Expression icontains 元素列表

java - 当套接字关闭时,与套接字关联的流是否会自动关闭?

使用 onSubmit 调用时,Javascript 函数不起作用

java - android:按钮onClick(),无法判断是否发生了任何事情

javascript - 在CSS class的基础上为各种元素添加onclick事件

jquery - 如何为 jQuery 创建 if 语句,单击事件