2010-11-20 1 views
1

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

Поиск в Google сказал мне, что я могу использовать JDialog вместо JFrame. К сожалению, это не очень хорошее решение в моем случае, потому что я хочу динамически включать или отключать значок панели задач на основе решения пользователя.

Возможно ли это как-то?

спасибо и добрые пожелания, Matthias

ответ

0

Что-то попробовать, хотя я не совсем уверен, что это сработает, потому что здесь поздно, и я думаю об этом неправильно.

Когда вы сворачиваете окно, событие запускается, то, что вы хотите сделать, это поймать его, добавив WindowStateListener в JFrame, который следит за WINDOW_ICONIFIED и WINDOW_DEICONIFIED. Когда происходит WINDOW_ICONIFIED, установите для свойства visible JFrame значение false; когда WINDOW_DEICONIFIED задает значение true. Быстрая проверка установки видимости фреймов на false, казалось, удаляла ее из панели задач, все, что вам нужно сделать, - это выяснить, действительно ли она работает, а затем реализовать государственный список.

Вот код, который я использовал для тестирования

import java.awt.*; 

public class FrameTest 
{ 
    public static void main (String args[]) throws Exception 
    { 
     // Create a test frame 
     Frame frame = new Frame("Hello"); 
     frame.add (new Label("Minimize demo")); 
     frame.pack(); 

     // Show the frame 
     frame.setVisible (true); 

     // Sleep for 5 seconds, then minimize 
     Thread.sleep (5000); 
     frame.setState (Frame.ICONIFIED); 
     frame.setVisible(false); 
     // Sleep for 5 seconds, then restore 
     Thread.sleep (5000); 
     frame.setState (Frame.NORMAL); 
     frame.setVisible(true); 

     // Sleep for 5 seconds, then kill window 
     Thread.sleep (5000); 
     frame.setVisible (false); 
     frame.dispose(); 

     // Terminate test 
     System.exit(0); 
    } 
} 
+0

проблема здесь заключается в том, что в этом случае, если окно JFrame минимизирована есть еще значок в панели задач, не так ли? Но я хочу, чтобы wo удалил весь значок (запись) из панели задач, как только окно будет сведено к минимуму ... – Matthias

+0

Я просто попробовал это со старой программой, в которой я сидел, и это сработало. Я установил свойство видимости jframes в false, т. Е. frame.setVisible (ложь); и он больше не появился в панели задач. Чтобы сделать это при сведении к минимуму, вам нужно будет послушать изменение состояния, которое отличается от того, что я сказал (мой вариант до 1.4), но его достаточно просто найти. Когда вы восстанавливаете окно, вы просто устанавливаетеVisible (true), и вам хорошо идти снова. – phill

+0

ОК, я дам это попробовать, спасибо! – Matthias

2

JDialog или JFrame это просто контейнер. Переключение между ними не сработает для вашей ситуации? Когда вам нужно переключиться, просто создайте новый экземпляр другого типа, установленного в одно и то же местоположение и размер, и переместите contentPane.

 Смежные вопросы

  • Нет связанных вопросов^_^