Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从任务栏隐藏JFrame或JWindow_Java_Swing_Jframe_Taskbar_Jwindow - Fatal编程技术网

Java 从任务栏隐藏JFrame或JWindow

Java 从任务栏隐藏JFrame或JWindow,java,swing,jframe,taskbar,jwindow,Java,Swing,Jframe,Taskbar,Jwindow,我正在使用JavaSwing应用程序。我使用了JFrame作为通知窗口。当我的应用程序以随机间隔运行时,一些通知将显示在屏幕的右上方,但当此时显示通知窗口时,我会看到在我的任务栏上命名的带有标题的通知详细信息。我想阻止在任务栏上显示此信息。谁来帮我。我也尝试过使用JWindow,但出现了相同的问题。我不想使用任务栏上的系统尝试 您应该使用JDialog而不是JFrame或JWindow。以下示例可以帮助您: import java.awt.event.ActionEvent; import ja

我正在使用JavaSwing应用程序。我使用了JFrame作为通知窗口。当我的应用程序以随机间隔运行时,一些通知将显示在屏幕的右上方,但当此时显示通知窗口时,我会看到在我的任务栏上命名的带有标题的通知详细信息。我想阻止在任务栏上显示此信息。谁来帮我。我也尝试过使用JWindow,但出现了相同的问题。我不想使用任务栏上的系统尝试


您应该使用
JDialog
而不是
JFrame
JWindow
。以下示例可以帮助您:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.Timer;

public class Main {
    public static void main(String[] args) {
        final JDialog dlg = new JDialog();
        dlg.setBounds(100, 100, 200, 100);
        dlg.setUndecorated(true);
        dlg.setVisible(!dlg.isVisible());

        Timer showTimer = new Timer(3000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dlg.setVisible(!dlg.isVisible());
            }
        });
        showTimer.start();
    }
}
[更新] 实际上,JDialog用于为另一个JFrame或JWindow提供一个框架作为子框架,因此默认情况下,它不应该在任务栏或系统托盘中创建任何信息

上面的代码在屏幕上提供了以下输出,任务栏或系统托盘上没有图标化信息,如您所见:

祝你好运。

试试看
setType(Type.UTILITY)

缺点是
装饰
JFrames
只提供
关闭
按钮。
对未修饰的JFrames更有效“我不想在任务栏上使用系统试用”为什么不?听起来像恶意软件。什么版本的Windows
JWindow
在过去一直工作到7,我投票将这个问题作为离题题题来结束,因为它似乎是关于开发恶意软件的。感谢您的好选择,但当JDialog可见时,这个对话框仍然在任务栏上可见。是否可能JDialog显示在屏幕上,但在任务栏上看不到该JDialog的信息?@piyus:是的,这是可能的。它在我的系统上工作。您的应用程序是否使用任何自定义L&F?我会提供一个屏幕截图,显示对话框不会在任务栏上显示任何信息。您是运行了我的代码还是将JFrame或JWindow更改为JDialog?在回复您之后,我已经执行了您的代码。我没有使用自定义L&F。我在Linux Mint操作系统上运行您的代码。如果你不介意的话,你会分享你的截图吗?事实上,我在我的机器上运行win7,但应该没有什么不同。顺便说一下,这是有线的。绘制图形窗口或框架在很大程度上取决于操作系统。可能出于安全目的,Mint OS没有采用相同的方式显示帧。这比在未装饰的帧中使用JDialog效果更好-这些帧在alt选项卡视图中隐藏,不会导致系统托盘图标的上下文菜单出现问题(是的,对话框会这样做),并且不要尝试到前面(即使在对话框上设置了
setAutoRequestFocus(false)
set)。