Короткий ответ, нет.
Swing - это однопоточная инфраструктура, это означает, что любая вещь, которая блокирует Thread Dispatching Thread, не позволит ему обновлять пользовательский интерфейс или обрабатывать любые новые события (делая UI выглядит так, будто он висел, потому что он имеет).
Конечно, вы можете использовать Thread
, но Swing также не является потокобезопасным. Это означает, что ВСЕ изменения в пользовательском интерфейсе ДОЛЖНЫ быть сделаны из контекста Диспетчерского потока событий. Хотя есть способы преодолеть это, самый простой способ - просто использовать Swing Timer
.
Познакомьтесь с . Как использовать Swing Timers и Параллелизм в Swing для получения дополнительной информации
Вы также должны взглянуть на Начальные потоки .
При обновлении пользовательского интерфейса может потребоваться вызовите revaldiate
и repaint
после того, как вы добавили новые компоненты, чтобы заставить пользовательский интерфейс обновлять, чтобы переформатировать его содержимое.
Глядя на список исключений Ruby , SignalException
- единственное, что называется * Exception
; все остальное - XXXError
(кроме SystemExit
и фатальной
). Во всяком случае, практика заключается в том, чтобы называть ваше исключение FooError
. Мне не удается найти конкретную причину, по которой SignalException
не называется SignalError
.
Соглашение Module :: # {Type} Error
для всего, что вызвано вашим приложением (например, http://weblog.jamisbuck.org/2007/3/7/raising-the -right-exception ). Обработка исключений в Ruby не стратифицируется так же, как в Java, поскольку модель исключения отличается на уровне языка.
Из того, что я видел, соглашения соблюдаются немного более свободно для расширений C / FFI / JNA.