为什么我的GUI看起来不对劲?

时间:2013-02-19 22:29:30

标签: java user-interface netbeans look-and-feel

使用Java在Mac上使用Netbeans GUI构建器构建。

这就是Netbeans中GUI的样子:

Netbeans GUI

当我点击预览时,它看起来并不太糟糕,但有一些小变化:

GUI Preview

最后,当我运行它时,它看起来像这样: - 可怕的

Look and feel

我认为这与Java的“外观和感觉”有关。我试过删除它,GUI变得一团糟。那么我的选择是什么?正如你可以看到Netbeans中的所有内容一样,当我运行它时,一切都很糟糕。

有什么想法吗?花了一天时间搞砸了这个,我已经厌倦了至少说

3 个答案:

答案 0 :(得分:5)

从外观上看,Netbeans中的预览使用的是运行应用程序时Java正在使用的其他外观
但是,您可以尝试手动设置所需的外观。 Oracle提供tutorial,关于如何获取和设置外观

答案 1 :(得分:5)

在代码的某些地方,Netbeans会创建一个main方法(这将在Netbeans执行的类中,并且可能是您的主框架 - 我认为这将是SPPMainGUI)< / p>

它看起来像这样(请注意,它可能会“折叠”,因此您只能看到第一条评论和第二条评论的decsLook and feel setting code (optional)

/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* 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(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
    java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
    java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
    java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>

点击边距中的小+展开代码区,然后将for-loop替换为UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());,如下所示

/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* 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 {
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
    java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
    java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
    java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
    java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>

当afsantos发现问题时,如果你能接受他的答案是正确的(并且反过来投票给我),我会赞美它,轻推,轻推,眨眼,眨眼,不再说了)

答案 2 :(得分:1)

正如你所提到的,它与外观和感觉有关,所以真的,如果找到L&amp; F Netbeans默认使用的唯一问题。 Google提出this page。我引用,

  

在NetBeans 7中,默认外观自动设置为Nimbus   外观和感觉。

From Oracle:

  

Nimbus是一款优雅的跨平台外观   Java SE 6 Update 10(6u10)发布。

要启用Nimbus外观,只需在某处添加这些不言自明的行:

try {
    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
            UIManager.setLookAndFeel(info.getClassName());
            break;
        }
    }
} catch (Exception e) {
    // If Nimbus is not available, you can set the GUI to another look and feel.
}