JFrame大小调整和标题栏颜色有问题

时间:2014-05-20 07:05:31

标签: java jframe behavior

我的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);
        }
    });

}

}

提前致谢

GOT IT!不过要在这里发帖。

感谢您的帮助,我已经尝试了很多评论和改变,答案就是我的开始。我第一次在Netbeans中使用GUI,发现我想要更多的自由,所以在Eclipse中也是如此,但我在很大程度上复制了Netbeans生成的代码。

已生成 -

mainWindow.setFocusableWindowState(false);

需要改为true,我仍然需要进一步挖掘,因为我无法理解它为什么会想要这种行为!

我已经掌握了这一点,再次感谢......

2 个答案:

答案 0 :(得分:0)

只能根据需要进行更改。

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);
        }    

答案 1 :(得分:0)

要使标题栏看起来像其他应用,您必须使用原生外观:

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