2015-04-18 3 views
0

Итак, в следующем коде, помещая frame.add (OpeningSplash) перед SetVisible (true), работает правильно (то есть отображает изображение), но после этого его не следует. Как я могу это исправить?Почему setVisible() удаляет мои компоненты?

public static void main (String Args[]){ 
    JFrame frame = new JFrame("Swords & Sworcery");    
    frame.setSize(1920,1080); 
    frame.setUndecorated(true); 
    frame.setVisible(true); 
    frame.add(new OpeningSplash()); 

    final JFXPanel fxPanel = new JFXPanel(); 
    frame.add(fxPanel); 
    initFX(fxPanel); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    MUSIK.playIntro(); 

} 
+1

'' String Args [] '' O_o. Вам нужно положить '' frame.setVisible (true) '' в последнюю строку. – Aero

+0

Подождите, но тогда рамка не останется невидимой до тех пор, пока вся игра не будет выполнена? (игра будет помещена в игру playIntro) – danishanish

+0

Также, что случилось с String Args []? Я новичок – danishanish

ответ

2

Это довольно просто понять. Подумайте обо всех ваших компонентах как о периферии вашего компьютера. Вы, по сути, включаете свой компьютер, прежде чем подключать все периферийные устройства.

setVisible() завершает добавление всех объектов в ваш JFrame, чтобы при отображении все было в целости.

См "Why to use setVisible() below our code!"

Таким образом, вы должны ссылаться на ваши добавления компонентов перед установкой рамы видны.

Надеюсь, что это очистит вещи

+1

Исправить или использовать перерисовка, недействительность или что-то в этом роде. Если вы добавите компоненты после setVisible. – maraca

+0

Да, это сработает! – TejjD

+0

Пожалуйста, отметьте правильный, если я помог или указал вам в правильном направлении. – TejjD

Смежные вопросы