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

时间:2016-09-16 08:42:04

标签: java swing button checkbox focus

我有一个多选JavaSwing应用程序,它有复选框和下一个/上一个按钮。我对它进行了修改,因此当它启动时焦点现在在Next按钮上,允许用户按Enter / Return进入下一个屏幕。

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

我认为这是不可接受的行为,但他说,"预期的行为是当你选择任何控制时,显然它会关注那个元素。你想要覆盖Java Inbuilt Functionality,这是不可能的。"

这只是错了。他是对的吗?是否有任何我可以指向他的来源,这将使他能够专注于鼠标点击的复选框,同时在按钮上保持键盘焦点

非常感谢提前。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您不应该使用键盘焦点 - 这只会激怒尝试仅使用击键导航UI的用户。

您正在寻找的是JFrameJDialog rootpane上提供的“默认按钮”:

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;
}