Почему мой графический интерфейс никогда не выглядит правильно?

Создан с помощью построителя графического интерфейса Netbeans на Mac в Java.

Вот как выглядит графический интерфейс в Netbeans:

Графический интерфейс Netbeans

Когда я нажимаю предварительный просмотр, это выглядит не так уж плохо, но есть небольшие изменения:

Предварительный просмотр графического интерфейса

Наконец, когда я запускаю его, это выглядит так: - ужасно

Внешний вид

Я предполагаю, что это связано с внешним видом Java. Я попытался удалить это, и графический интерфейс стал руинами. Итак, каковы мои варианты? Как вы можете видеть, в Netbeans все выстраивается в линию, когда я запускаю его, все в беспорядке.

Любые идеи? Провел день возиться с этим, и я сыт по горло, если не сказать больше


person John Vasiliou    schedule 19.02.2013    source источник
comment
Похоже, что Netbeans устанавливает AQUA так, как это выглядит и работает, но когда вы запускаете приложение, значение по умолчанию выбрано.   -  person BevynQ    schedule 20.02.2013
comment
Кажется так! Я вижу, что нет никакого способа изменить конструктор GUI по умолчанию L&F на Aqua или Nimbus, но вы можете использовать Metal. Как я могу это сделать?   -  person John Vasiliou    schedule 20.02.2013


Ответы (3)


Где-то в вашем коде Netbeans создал бы метод main (это будет внутри класса, который Netbeans выполняет, и, вероятно, это ваш главный фрейм - я думаю, что это будет SPPMainGUI)

Он будет выглядеть примерно так (обратите внимание, что он может быть «свернут», поэтому вы увидите только первый комментарий и decs второго (Look 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 определил проблему, я был бы признателен, если бы вы могли принять его ответ как правильный (и вместо этого проголосовать за меня;), подтолкнуть, подтолкнуть, подмигнуть, подмигнуть, больше не говорить)

person MadProgrammer    schedule 19.02.2013
comment
Ninja'd: у тебя более полный ответ, +1 - person Xyene; 20.02.2013
comment
Я нашел его, поиграл и обнаружил, что это ничего не дает, кроме стандартного пользовательского интерфейса, который многое ломает! Есть ли способ изменить конструктор GUI L&F на Mac на Metal? Как я понимаю, как изменить GUI на Metal, когда он запускается и собирается сейчас! - person John Vasiliou; 20.02.2013
comment
Конечно, я не уверен, почему, но сено, используя UIManager.getCrossPlatformLookAndFeelClassName() вместо UIManager.getSystemLookAndFeelClassName() - person MadProgrammer; 20.02.2013
comment
wiki.netbeans.org/FaqUsingMetalLFForPerformance Нашел, как изменить его на Metal в редакторе по умолчанию! - person John Vasiliou; 20.02.2013

Судя по всему, предварительный просмотр в Netbeans использует другой внешний вид, отличный от того, который Java использует при запуске приложения.
Однако вы можете попытаться вручную установить < em>Посмотри и почувствуй как хочешь. Существует руководство от Oracle о том, как получить и установить Look и почувствовать.

person afsantos    schedule 19.02.2013
comment
Это определенно проблема, однако я не могу найти то же самое, что и конструктор графического интерфейса Netbean, поэтому он выглядит так же - есть идеи? - person John Vasiliou; 20.02.2013
comment
Ответ @JohnVasiliou afsantos правильный и должен быть помечен как таковой, но я добавил ответ с изложением того, что вам следует искать - person MadProgrammer; 20.02.2013

Как вы упомянули, это связано с внешним видом, так что на самом деле единственная проблема заключается в том, чтобы найти то, что L&F Netbeans использует по умолчанию. Google открыл эту страницу. Я цитирую,

В NetBeans 7 внешний вид по умолчанию автоматически устанавливается на внешний вид Nimbus.

От Oracle:

Nimbus — это отточенный кроссплатформенный внешний вид, представленный в выпуске Java SE 6 Update 10 (6u10).

Чтобы включить Nimbus Look and Feel, просто добавьте где-нибудь эти не требующие пояснений строки:

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.
}
person Xyene    schedule 19.02.2013