有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JDialog未显示最小化/关闭按钮

在研究这个问题时,似乎大多数人都想做相反的事情(即移除最小化/关闭按钮)。 我没有成功地使用重复出现的setUndecoratedsetDefaultCloseOperation

这是我的代码:

private class TestDialog extends JDialog 
{
    public static final String title_ = "Test Dialog";

    public TestDialog(JFrame parent)
    {
        super(parent,title_,true);
        setMinimumSize(new Dimension(500,500));
        setLocationRelativeTo(null);
        setUndecorated(false);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    }
}

当我显示对话框时,我得到以下信息:

enter image description here

其他信息:
操作系统:Ubuntu
Java版本:1.7.0_55


共 (2) 个答案

  1. # 1 楼答案

    目前尚不清楚哪里出了问题,但下面的完整示例适用于Ubuntu12、Java6;它可能会帮助你解决这个问题。请注意,所有的top-level container必须在event dispatch thread上构造

    enter image description here

    import java.awt.Dimension;
    import java.awt.EventQueue;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.WindowConstants;
    
    
    public class TestDialog extends JDialog {
    
        public static final String title = "Test Dialog";
    
        public TestDialog(JFrame parent) {
            super(parent, title, true);
            add(new JPanel(){
    
                @Override
                public Dimension getPreferredSize() {
                    return new Dimension(320, 240);
                }
            });
            pack();
            setLocationRelativeTo(null);
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        }
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    new TestDialog(null).setVisible(true);
                }
            });
        }
    }
    
  2. # 2 楼答案

    我已经找到了某种临时解决方案,如果你改变了以下行:

    super(parent, title, true);
    

    super(null, title, Dialog.ModalityType.MODELESS);
    

    然后,当使用GNOME时,窗口关闭按钮将出现。然而,我不确定这会导致什么其他问题