java jdialog任务栏按钮

时间:2010-08-10 12:54:40

标签: java linux jframe taskbar jdialog

我正在Linux上攻击jdialog,但它仍然出现在我的任务栏中。 这是代码?怎么了?

import javax.swing.JDialog;

public class Main {
    public static void main(String [] args) {
        new mydialog();
    }

    private static class mydialog extends JDialog {
        public mydialog() {
            super();
            setSize(200,200);
            setLocationByPlatform(true);
            setAlwaysOnTop(false);
            setUndecorated(true);
            setVisible(true);
        }
    }
}

5 个答案:

答案 0 :(得分:1)

由于这似乎仍然是Linux环境中的问题,我想分享我对此主题的解决方案:

我只需要使用父级框架/窗口创建JDialog,例如“new JDialog(new JFrame());”在将JDialog设置为Visible之后,我调用“jframe.revalidate();”。而已。看起来Java在初始化JDialog时与DisplayManager正确通信有问题。

适用于Java 1.8.0.45,Linux Mint 17.1,Cinnamon 2.4.8

答案 1 :(得分:0)

尝试用setLocationByPlatform(true);

替换setLocation(10, 10);

答案 2 :(得分:0)

如果您不希望它出现在任务栏中,您需要使用JWindow 另见:how-do-i-prevent-jdialog-from-showing-in-gnome-panellinux

答案 3 :(得分:0)

我找到的唯一解决方案是从Swing接口切换到gtk接口,为此我使用了java-gnome。唯一的问题是你必须将swing类的所有组件都改为相应的gtk类。

答案 4 :(得分:0)

现在已经挣扎了一段时间了。最终对我有用的是什么:

JDialog frame = new JDialog();
frame.setType(javax.swing.JFrame.Type.POPUP);

或者,您可以尝试将类型设置为UTILITY。

运行Java 1.8.0_25的Lubuntu 15.04(LXDE)