Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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大小和标题栏颜色有问题_Java_Jframe_Behavior - Fatal编程技术网

Java JFrame大小和标题栏颜色有问题

Java JFrame大小和标题栏颜色有问题,java,jframe,behavior,Java,Jframe,Behavior,我的GUI有相对简单的问题,我想打开一个JFrame作为我的应用程序的窗口,我希望它最大化并且不可调整大小,我已经这样做了,但存在两个问题,第一,它似乎可以工作,但如果我点击并拖动标题栏,它会从最大化中分离出来,我已经阅读了所有的建议并付诸实施,但我觉得这很烦人,因为我希望它保持最大化。 其次,标题栏是灰色的,而不是海军蓝色的,因为我对所有其他应用程序的外观和感觉都是灰色的。 感谢您的帮助,因为我才刚开始 我的代码是- 公共类GUI扩展JFrame{ public JMenuBar mainMe

我的GUI有相对简单的问题,我想打开一个JFrame作为我的应用程序的窗口,我希望它最大化并且不可调整大小,我已经这样做了,但存在两个问题,第一,它似乎可以工作,但如果我点击并拖动标题栏,它会从最大化中分离出来,我已经阅读了所有的建议并付诸实施,但我觉得这很烦人,因为我希望它保持最大化。 其次,标题栏是灰色的,而不是海军蓝色的,因为我对所有其他应用程序的外观和感觉都是灰色的。 感谢您的帮助,因为我才刚开始

我的代码是-

公共类GUI扩展JFrame{

public JMenuBar mainMenu;
public JMenu fileMenu;
public JMenu editMenu;
public JMenu viaPackMenu;
public JMenu viaMenuMenu;
public JMenu viaDesignMenu;
public JMenu helpMenu;

/**
 * 
 */
private static final long serialVersionUID = 1L;

/*
 *  This is the main class constructor for the GUI
 */
public GUI(){
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("Via Design Package");
    setFocusCycleRoot(false);
    setFocusable(false);
    setFocusableWindowState(false);
    setModalExclusionType(java.awt.Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
    setName("DesignFrame"); // NOI18N
    setEnabled(true);
    addWindowListener(new java.awt.event.WindowAdapter() {
        public void windowOpened(java.awt.event.WindowEvent evt) {
            GUIWindowOpened(evt);
        }
    });

    mainMenu = new JMenuBar();
    fileMenu = new JMenu("File");
    editMenu = new JMenu("Edit");
    viaPackMenu = new JMenu("Via Pack");
    viaMenuMenu = new JMenu("Via Menu");
    viaDesignMenu = new JMenu("Via Design");
    helpMenu = new JMenu("Help");

    mainMenu.add(fileMenu);
    mainMenu.add(editMenu);
    mainMenu.add(viaPackMenu);
    mainMenu.add(viaMenuMenu);
    mainMenu.add(viaDesignMenu);
    mainMenu.add(helpMenu);

    setJMenuBar(mainMenu);
}

private void GUIWindowOpened(java.awt.event.WindowEvent evt) {                                           
    // TODO add your handling code here:
    setExtendedState(JFrame.MAXIMIZED_BOTH);
    setResizable(false);
}                                          

public static void main(String args[]){
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new GUI().setVisible(true);
        }
    });

}
}

提前谢谢 明白了!不过我必须在这里发帖

谢谢你的帮助,我尝试了很多评论和改变,答案是我是如何开始的。我首先在Netbeans中做GUI,发现我想要更多的自由,在Eclipse中也是如此,但我复制了Netbeans生成的大部分代码

它产生了-

mainWindow.setFocusableWindowState(false);
这需要改变为真,我仍然需要进一步挖掘,因为我不明白为什么它会想要这种行为


我会掌握这个诀窍的,再次感谢…

它可以工作,只需要按照下面的要求进行更改

private void GUIWindowOpened(java.awt.event.WindowEvent evt) {                                           
            // TODO add your handling code here:
            setExtendedState(JFrame.MAXIMIZED_BOTH);
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            setResizable(false);
            setSize(screenSize);
        }    

要使标题栏看起来像其他应用程序,您必须使用本机外观:

try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}
catch (Exception e) {e.printStackTrace();}

谢谢Keval,我这么做了,但它仍然是一样的,当我点击并拖动标题栏时,它会分离,奇怪的是,它现在在鼠标上这样做,而不是在鼠标上。我在if后面添加了一个println,看看什么是laf,上面写着“Metal”,我不知道这是不是一个问题,但我使用的所有东西都符合我的预期,标准的windows navy标题栏,但我的应用程序是灰色标题栏,而且单击时不会显示windows菜单左上角,但如果我双击它将关闭-更新,我在main中把println放在if语句之前,它循环了两次,第一次是“Metal”,第二次是“Nimbus”@Phil不能理解你的问题。请详细说明。所以我可以理解。它与Maximized分离的事实(应用程序是max’d,点击并拖动标题栏,它取消了最大化,因为添加尺寸代码只是意味着它有一个小边框,而Maximized没有边框)是我可以接受的东西,因为大多数应用程序都会这样做,但由于某些原因,标题栏不像我使用的其他所有东西一样是蓝色的,windows菜单(单击标题栏左上角的java图标所在位置)不会做任何事,除非我双击,然后它就会退出。我想也许一个对话框可以工作,GUI将在固定大小的图形上工作,所以尽量避免布局/调整大小problems@Phil所以您的问题是,当您双击java图标时,它将退出程序。你想停止吗?这一点没问题,但单击图标应该会显示windows菜单(还原、移动、大小、最小化、最大化并关闭Alt+F4),它不会。标题栏的颜色也是灰色而不是蓝色。我刚刚尝试了几个不同的外观设置,我看到一个蓝色的条慢慢地显示在应用程序的顶部,然后一旦它完全打开,就会变成灰色,好像它失去了焦点,但菜单(文件、编辑等)和右上角的最小化和X仍然工作。我尝试了它,它是一样的,即使它返回了windowslookandfeel。。。我的问题在别处,请看我的答案和感谢