Свинг-окно не появляется после получения ввода из консоли - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть простое окно качания для загрузки файлов.

Это появляется в классе analyzedLoad, в функции analyzedloads()

JFileChooser fc = new JFileChooser();
JFrame frame = new JFrame();
int returnVal = fc.showOpenDialog(frame);
frame.dispose();
if (returnVal == JFileChooser.APPROVE_OPTION) {

Там, где я применяю функцию без получения ввода от пользователя, все отлично. Но откуда я получаю информацию от пользователя, таким образом:

    int al= 0;
     Scanner in = new Scanner(System.in);
       System.out.println("for choose file, press 1; for save, press 2");
       al= in.nextInt();
       if (al== 1){
        analyzedLoad.analyzedloads(); // A static function which open the swing window

Окно не появляется, и процесс продолжает выполняться, ничего не делая.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

Becaue "операция сканирования может блокировать ожидание ввода" Я подозреваю, что вы блокируете поток отправки события . Вместо этого используйте File Chooser , чтобы получить ссылку на файл.

1 голос
/ 28 февраля 2012

Вы можете попытаться объявить переменную analyzeLoad как final и сделать что-то вроде этого:

SwingUtilities.invokeLater(new Runnable()
{
    @Override
    public void run()
    {
         analyzedLoad.analyzedloads();
    }
}

или поскольку метод является статическим:

    SwingUtilities.invokeLater(new Runnable()
    {
        @Override
        public void run()
        {
             YourClass.analyzedloads();
        }
    }

Как говорится, без дополнительного кода мы можем только строить догадки.

1 голос
/ 28 февраля 2012

Попробуйте добавить секунду mywindow.setVisible(true) после работы консоли.

...