选中复选框时将注意力集中在键盘上

Keep focus on keyboard when checkbox is selected

我有一个包含复选框和 next/previous 按钮的多选 JavaSwing 应用程序。我对其进行了修改,因此在启动时焦点现在位于下一步按钮上,允许用户按 Enter/Return 转到下一个屏幕。

现在的问题是当用户选中一个复选框时,“下一步”按钮会失去其键盘焦点 和灰色轮廓。 Coder 添加了一个 hack,因此每次选中复选框时按钮都会重新获得焦点和灰色轮廓,但是每次单击鼠标时按钮都会闪烁!有些屏幕有 4 个正确的复选框,因此按钮闪烁 4 次。

我认为这是不可接受的行为,但他说,"Expected behavior is when you select any control its obvious it gains focus on that Element. You are saying to override Java Inbuilt Functionality which is not possible."

这感觉不对。他是对的吗?是否有任何来源可以让他在单击鼠标时专注于复选框,同时保持键盘焦点在按钮上?

非常感谢。

您的程序员可能应该只在复选框上设置 setFocusable(false)。

您不应该乱用键盘焦点 - 这只会激怒那些试图仅通过击键来导航您的 UI 的用户。

您正在寻找的是 JFrameJDialog 根窗格中可用的 "default button":

public JFrame makeFrame() {
    JFrame f = new JFrame(...);
    JButton next = new JButton("next");
    f.getRootPane().setDefaultButton(next);
    return f;
}

public JDialog makeFrame() {
    JDialog d = new JDialog(...);
    JButton next = new JButton("next");
    d.getRootPane().setDefaultButton(next);
    return d;
}