Java,Swing和AWT:去除所有对象的焦点

6
我正在为学校做这个项目,但是我的一个面板中的一个按钮有焦点(我可以用tab键改变焦点)。无论哪个按钮有焦点都会表现出奇怪的行为。
有没有办法让没有按钮有焦点?即使按下tab键也没有任何选择?
请注意,矩形按钮周围有一个虚线。我想让它消失。
谢谢! alt text
4个回答

14
button.setFocusable(false);

很好!除了将其应用于每个按钮之外,是否有办法使框架上的所有内容“setFocusable(false)”? - kralco626

6

如果你只是想让它不显示虚线,你也可以使用下面的代码

button.setFocusPainted(false);
仍然可以接收焦点,但你将看不到虚线。

2
如果您不想让任何东西获得焦点,可以使用以下代码:
button.getRootPane().requestFocus();

使用 setFocusable 会将焦点移动到下一个可聚焦的组件。


0
public void removeFocusFromAllObjects(Container container) {
    container.setFocusable(false);
    for (Component child : container.getComponents()) {
        if (child instanceof Container) {
            removeFocusFromAllObjects((Container) child);
        } else {
            child.setFocusable(false);
        }
    }
}

我编写了上述代码,以递归方式从父组件中移除所有组件的焦点。希望对访问此帖子的某些人有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接