Java Look and Feel Nimbus работает только в новом окне

Я создаю графический интерфейс, используя «UI Designer» в IntelliJ.

Я установил тему «Нимбус», к сожалению, она не работает в главном окне. Работает только новые окна/диалоги.

Экран для окна и приложения:

введите здесь описание изображения


person user3600856    schedule 04.05.2014    source источник
comment
Показ вашего кода поможет нам помочь вам   -  person Paul Samsotha    schedule 04.05.2014
comment
Вы уверены, что это не работает в главном окне или только в том, что оно не работает в главном окне до перезапуска программы?   -  person chrylis -cautiouslyoptimistic-    schedule 04.05.2014


Ответы (2)


Вам нужно установить внешний вид, прежде чем создавать экземпляры таких компонентов, как ваш класс gui (и вы должны использовать заглавные буквы в именах классов).

person chrylis -cautiouslyoptimistic-    schedule 04.05.2014

Я рекомендую переместить конфигурацию Look&Feel в запуск основной функции, прежде чем делать что-либо еще. Изменения в L&F затрагивают только новые кадры, старые нужно обновлять.

public static void main(String[] args){
    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 | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
    //Launching frames
    }

Способ Netbeans для установки L&F довольно приятный. Если вы меняете L&F во время выполнения, вам нужно обновить существующие объекты (например, ваше первое окно, у которого нет вида Numbus)

UIManager.setLookAndFeel(stringName);
SwingUtilities.updateComponentTreeUI(frame); //quite often "this" passed in 
frame.pack();
person T.G    schedule 04.05.2014