Содержимое Jframe не отображается - PullRequest
1 голос
/ 29 марта 2012

Я пытаюсь отобразить загрузочное изображение в новом JFrame, когда пользователь нажимает определенную кнопку в моем приложении. JFrame отображается, но ничего не отображается!, Также с белым фоном, тогда как все JFrames имеют серый фон по умолчанию. Что здесь не так?

stop.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            analyzer.running=false;
            JFrame Load1=new JFrame("Load1");
            ImageIcon icon1=new ImageIcon("./ajax-loader.gif");
            System.out.println(icon1.getIconHeight());
            Load1.add(new JLabel("Retrieving...", icon1, JLabel.CENTER),BorderLayout.CENTER);
            Load1.pack();
            Load1.setSize(400,400);
            Load1.setVisible(true);

            System.out.println("Start Processing");
            parser.parse();  // Time Consuming method


            nw_Creator.create();
            System.out.println("End Processing");
            Load1.setVisible(false);

            home.setVisible(false);
            screen2.setVisible(true);

        }
    });

Ответы [ 2 ]

4 голосов
/ 29 марта 2012

Не помещайте трудоемкие детали в обработчик событий или любой другой метод, выполняемый в потоке диспетчеризации событий.Вы можете вместо этого использовать качели .

1 голос
/ 29 марта 2012

Происходит то, что вы никогда не освобождаете поток пользовательского интерфейса, поэтому ваш JFrame никогда не окрашивается. Поскольку все графические операции выполняются в потоке пользовательского интерфейса, вы должны освободить его, выполнить вычисления, а затем закрыть кадр, если хотите, чтобы jframe отображал что-либо.

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