Как предварительно загрузить компоненты Swing - PullRequest
0 голосов
/ 15 января 2012

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

Затем приложение позволяет пользователю перейти на панель мониторинга, которая требует загрузки и добавления множества компонентов Swing на фоновую панель.Это занимает время.

Мне было интересно, как я могу сделать так, чтобы во время процесса загрузки в начале приложение загружало все образы компонентов Swing и т. Д., Чтобы они отображались мгновенно, когда пользователь выполняет командудля этого.

Я могу загрузить все компоненты следующим образом:

JButton = new JButton("blah"); 

, но я не уверен, что этого достаточно, чтобы компоненты появились мгновенно, не добавив несколько изображенийзаполненные компоненты Swing в то же время по-прежнему отстают от потока пользовательского интерфейса, даже если он уже был «загружен», как показано выше?

Спасибо!

1 Ответ

0 голосов
/ 15 января 2012

на использование компонентов

setVisible(false)

например

public class myParentPanel extends JPanel{
     public myParentPanel{

     //add all the child components
     //Do what ever takes along time
     setVisible(false); //this then makes in invisible but still 
                        //allows all the set up code to run
     }

     public void showParent(){
         setVisible(true);
         invalidate();
     }
}

, а затем создайте метод, чтобы сделать их видимыми при необходимости. Следовательно, все ваши настройки в конструкторах могут быть вызваны тогда, когда вы вызываете ваш метод, скажем:

drawWindow()

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

Достигнуто улучшение в том, что * запустит ваши настройки, т. Е. Проверяет и загружает методы панелей в отдельных потоках *, поэтому вам не придется ждать последовательной загрузки. Поэтому при загрузке вы можете использовать анонимный класс

 SwingUtilities.invokeLater(new Runnable(){ public void run(){

     //do my display set up

}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...