用Java创建一个不可聚焦的窗口

Fat*_*tus 6 java user-interface swing awt jframe

(已解决:只要窗口聚焦,a WindowStateListener和延迟调用toBack)

大家好!

我一直试图弄清楚如何制作一个java.awt.Window(任何子类都会这样做),这样它就不会被带到前面.我正在开发一个Java"Samurize-like"程序,该程序出现在所有应用程序窗口下方,并在屏幕上显示Widgets.就像" 永远在Java上的顶级窗口 "一样,我希望有一些简单的东西,希望只是一个方法调用,如果可能的话,但我已经通过API文档检查过,我没有运气.

编辑:对不起,我的意思是"总是在底部"而不是简单地"无法聚焦".

这是一个基本的测试用例.单击窗口时,它不应高于当前屏幕上的任何其他窗口:

import java.awt.*;
import javax.swing.*;

public class Main extends JFrame {
    public Main() {
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();

        setFocusable(false);
        setFocusableWindowState(false);
        setBounds(new Rectangle(dim));

        toBack();
    }

    public static void main(String[] args) {
        new Main().setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*iot 8

你想用 setFocusableWindowState(false)

(fwiw,这是在你提到的帖子的最高答案链接的API文件中)

编辑:如何添加一个监听器来执行窗口状态更改toBack()

编辑:您可能还会考虑覆盖该toFront方法以防止任何事情将窗口拉到前面.