我正在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);
}
}
}
答案 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)