Как я могу запустить панель задач Windows с помощью Swing?

Я разрабатываю приложение Swing, и мне нужно запустить панель задач Windows. Я не могу использовать frame.requestFocus() потому что я не хочу красть фокус из любого другого приложения.

Я не знаю, относится ли это к более поздним версиям Windows, но метод .toFront (), используемый для флэш-windows, если ни одно из текущих окон VM не было на переднем плане.

Это означает, что вызов frame.toFront () на свернутом фрейме всегда заставлял бы его мигать …

JNIWrapper с расширением winpack может делать то, что вы хотите.

Демо на сайте показывает это в действии.

Вы можете либо свести к минимуму ваш графический интерфейс и .toFront -en:

  Gui.frame.setState(Frame.ICONIFIED); for (int i = 0; i < 3; i++) { Thread.sleep(10); Gui.frame.toFront(); Thread.sleep(10); Gui.frame.setVisible(false); Thread.sleep(10); Gui.frame.toBack(); Thread.sleep(10); Gui.frame.setVisible(true); } // be creative!! 

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

... или перейдем к истинному корню этого вопроса, используя DLL- файл на FlashWindow . Вызов DLL невозможно с помощью чистого кода Java, вам понадобится помощь других языков программирования, возможно, например, с помощью JNA . Кроме этого, вы также можете написать свою собственную программу на другом языке и вызвать ее из своего Java-приложения. Я приведу пример в AutoHotkey ниже:

Код AutoHotkey:

  if 0 != 1 ; note: in ahk, 1 corresponds args[1] and 0 corresponds args.length { msgbox, There needs to be ONE parameter passed over to this file, which is the name of the window that should be flashed. ExitApp } programName = %1% winget, hWnd, ID, %programName% DllCall("FlashWindow",UInt,hWnd,Int,True) 

скомпилированный в файл flash.exe , помещенный в рабочий каталог Java, вы можете вызвать его из любой функции:

  Runtime.getRuntime().exec("./flash.exe \"" + MyJFrame.getTitle() + "\""); 

В качестве альтернативы можно использовать AutoHotkey.dll и получить доступ к нему в Javacode (есть руководства по его использованию в Интернете), поэтому нет необходимости в каких-либо внешних exe-файлах.

Если у вас все еще есть проблемы с миганием на панели задач Windows, пожалуйста, дайте мне знать!

Используя Swing как таковой, вы, вероятно, не можете; это особенность Widnows.

Лучший способ сделать это:

 if (!isFocused()) { setVisible(false); setVisible(true); } 
  • JTree: установка пользовательских открываемых / закрытых значков для отдельных групп
  • Разница между краской, paintComponent и paintComponents в Swing
  • setOpaque () в java
  • Доступ к компонентам GUI из другого classа
  • Java делает направленную линию и заставляет ее двигаться
  • Swing: Получить изображение JFrame
  • JTable с заголовками и столбцами
  • Печать JFrame и его компонентов
  • SwingWorker в Java
  • Добавление нескольких JProgressBar в TableColumn JTable
  • .gif изображение не перемещается при добавлении его в панель JTabbed
  • Давайте будем гением компьютера.