gpt4 book ai didi

java - 防止 JWindow 出现在所有窗口的顶部

转载 作者:行者123 更新时间:2023-12-01 04:52:33 24 4
gpt4 key购买 nike

我在我的项目中使用 JWindow 来显示未修饰的 UI,并且也不会出现在任务栏中。但是,JWindow 似乎总是位于所有其他窗口之上。我尝试将 setAlwaysOnTop 设置为 false,但似乎没有帮助。

这是可以重现该问题的代码:

package test;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JWindow;

public class Test extends JWindow implements ActionListener {

public Test() {
setSize(300, 300);
setLocationRelativeTo(null);
setAlwaysOnTop(false);

JButton myButton = new JButton("Click Here");
myButton.addActionListener(this);
getContentPane().add(myButton);

setVisible(true);
}

public static void main(String[] args) {
new Test();
}

@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Click Here"))
JOptionPane.showMessageDialog(this, "This dialog box appears behind the JWindow!");
}
}

我的操作系统是 Linux,我使用的是 Oracle JDK 6。此外,当我在 Windows 上测试我的应用程序时,我使用 JDialog 作为 UI,它运行良好。但是,在Linux中JDialog似乎出现在任务栏中。

有什么办法可以解决这个问题吗?

最佳答案

将窗口的可见性设置为 True 后,将其发送到后面,如下所示:

setVisible(true);
toBack();

如果稍后您想将其置于堆叠顺序的顶部,只需调用:

toFront();

更多详细信息请参见:

http://docs.oracle.com/javase/6/docs/api/java/awt/Window.html#toBack()

http://docs.oracle.com/javase/6/docs/api/java/awt/Window.html#toFront()

关于java - 防止 JWindow 出现在所有窗口的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com