Для выполнения своей работы наш клиент использует наше программное обеспечение (приложение Java Swing, запущенное с помощью Webstart), а также другое программное обеспечение, такое как MS Office. Время от времени в нашей программе происходят важные события, с которыми ему приходится сталкиваться без особых задержек. Клиент хочет получить заметное уведомление. Теперь он может использовать Excel в данный момент, поэтому всплывающего окна с сообщением будет недостаточно (хотя запись на панели задач будет мигать).
Нам нужен какой-то механизм, такой как уведомитель Outlook, то есть всплывающее окно, которое всегда видно, но не захватывает фокус. Уведомитель должен отображаться все время, пока не исчезнет причина сообщения (пользователь решил проблему) или пользователь не закроет сообщение (как в outlook). Кроме того, мы хотим отобразить иконку в трее и, возможно, воспроизвести звук.
Я попробовал Java6 java.awt.SystemTray, а также JDIC (версия 0.9, поскольку у нас уже есть эта библиотека в пути к классам этого проекта), но я не нашел способа установить время ожидания для TrayIcon.displayMessage, и кажется, что сообщение не всегда вверху.
Есть ли другой вариант, кроме JNI, для достижения запрошенного поведения?
Если JNI является единственным выбором и поскольку Windows является единственной платформой для наших клиентов, является ли Outlook уведомителем только для Outlook, или его можно свободно использовать через Windows API?
Или какие существуют другие варианты, чтобы уведомить пользователя о важной задаче, выполняемой в одном программном обеспечении, не мешая ему выполнить свою текущую задачу в другом программном обеспечении. Системный модальный диалог, следовательно, не вариант!