Изображение счетчика на JFrame во время создания пользовательского интерфейса

У меня есть приложение, которое после успешного входа в систему (на JFrame), начинает создавать основной кадр (класс MainUI который простирается от JFrame). Тот MainUI класс содержит JTabbedPane (который каждая вкладка является классом, который простирается от JPanel) и, на setVisible метод, создает и показывает каждую вкладку.

Я хочу добавить в форму входа после успешного входа изображение Spinner, чтобы указать, что MainUI создается

После отображения изображения Spinner я вызываю создание MainUI и позвонить setVisible метод на EventQueue.invokeLater(); но изображение Spinner не обновляется. Если я использую new Thread(runner).start(); обновляется, но я получаю много Component creation must be done on Event Dispatch Thread

Некоторый код Login.java:

buttonLogin.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
       login();
   }
});

private void login()
{
   //check DB and permissions
   //if all is ok
   lMsj.setIcon(spinner);
   new Thread(new Runnable() {
      public void run() {
          showMainUI(usr);
      }
   }).start();
}
private void showMainUI(final Usuario usr)
{
    Runnable runner = new Runnable() {
        public void run() {
            final MainUI mui = new MainUI();
            mui.setVisible(true);

            dispose();
        }
    };
    EventQueue.invokeLater(runner);
}

и некоторый код MainUI.java

public MainUI()
{
    SwingUtilities.invokeLater(new Runnable() {
        @Override public void run() {
            setMinimumSize(new Dimension(1280, 960));

            createComponents();
        }
    });
}
private void initComponents()
{
   //..
   // menuItem = new ...
    // ...
}

@Override
public void setVisible(boolean value)
{
   //..
   if (Security.get().isAllowed("tab1")){
     addTab1();
   }
   //..
}

private void addTab1(){
   //..
   getTabbedPane().addTab("Tab1", new Tab1());
   //..
}

Как я могу это исправить, чтобы изображение обновлялось, а пользовательский интерфейс создавался в "фоне"?

0 ответов

Другие вопросы по тегам