Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблемы с изменением вида курсора / 10 сообщений из 10, страница 1 из 1
09.04.2015, 10:23
    #38931513
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с изменением вида курсора
Столкнулся вот с этой странной и непонятной проблемой. Совершенно необходимо сделать из "стрелки" крутящееся колечко, потому как процесс довольно длительный, однако ничего не получается. Речь идет о наследнике JPanel, кусор должен меняться после нажатия кнопки ОК в JOptionPane.showMessageDialog. Пробовал как обычно:

Код: java
1.
2.
        Cursor currentCursor = getCursor();
        setCursor(new Cursor(Cursor.WAIT_CURSOR));



и так:
Код: java
1.
        setCursor((Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)));



результат один и тот же - форма не меняется. В чем дело, никто не подскажет? Обычно всегда срабатывало, а тут какой-то затык.
...
Рейтинг: 0 / 0
09.04.2015, 10:46
    #38931553
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с изменением вида курсора
Полуламер,

Я бы не рекомендовал этот способ вообще. Там помимо того чтобы заставить его работать, будет ещё геморрой с тем что курсор привязывается к конкретному контейнеру, а не приложению в целом. Вероятно проблема в ссылке на this, у которой вы вызываете setCursor() и getCursor().

Я у себя в ERP проекте сделал класс на базе SwingWorker, который блокирует фрейм диалогом с JProgressBar внутри. Это на много нагляднее чем форма курсора. Если блокировать GUI не нужно, то прогресс бар можно показать где-нибудь внутри фрейма, примерно так как это делает IntelliJ IDEA. Там прогресс отображается либо в диалоге, либо в status bar. Причем можно переключать.
...
Рейтинг: 0 / 0
09.04.2015, 11:04
    #38931582
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с изменением вида курсора
Blazkowicz ,

уже привык ценить Вашу помощь, не сомневаюсь, что решение с JProgressBar - более правильное и элегантное. Но хотелось бы все же понять, в чем может заключаться проблема именно с setCursor. Как можно попробовать это проверить?
...
Рейтинг: 0 / 0
09.04.2015, 11:11
    #38931588
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с изменением вида курсора
setCursor это метод конкретного контейнера. И курсор меняется только для этого контейнера. На каком именно контейнере вы его вызвали и на каком именно смотрите, мне пока не понятно.
...
Рейтинг: 0 / 0
09.04.2015, 11:30
    #38931626
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с изменением вида курсора
Выяснил вот что - поставил брекпойнт сразу после команды смена вида, в этом случае все осуществляется. Стало быть, swing просто не успевает переключить?
...
Рейтинг: 0 / 0
09.04.2015, 11:33
    #38931634
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с изменением вида курсора
Полуламерпосле команды смена вида
Че за команда такая?
...
Рейтинг: 0 / 0
09.04.2015, 11:37
    #38931648
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с изменением вида курсора
BlazkowiczПолуламерпосле команды смена вида
Че за команда такая?setCursor(new Cursor(Cursor.WAIT_CURSOR));
...
Рейтинг: 0 / 0
09.04.2015, 12:14
    #38931740
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с изменением вида курсора
Нашел ситуацию , почти один-в-один как у меня - тоже используется SwingUtilities.invokeLater, эта конструкция и глушила изменение курсора. Сработала задержка с помощью

Код: java
1.
Thread.currentThread().sleep(10000);



Решение действующее, но некрасивое.
...
Рейтинг: 0 / 0
09.04.2015, 12:29
    #38931761
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с изменением вида курсора
Ерунда, а не решение. Вот так все работает как положено:

Код: java
1.
2.
3.
4.
5.
6.
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    setCursor(new Cursor(Cursor.WAIT_CURSOR));
                    ...
                }
            });
...
Рейтинг: 0 / 0
09.04.2015, 12:37
    #38931779
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с изменением вида курсора
ПолуламерЕрунда, а не решение. Вот так все работает как положено:
У тебя либо многопоточность и ты вызываешь метод не из EDT. Либо у тебя контейнер вообще не инициализирован при вызове методы. Но все эти факты ты скромно умалчиваешь.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблемы с изменением вида курсора / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]