На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Java: сворачивание в трей


В данном материале мы разберем возможность сворачивания в трей окна на языке Java. Для этого напишем класс наследник от JFrame, создадим экземпляр этого класса (строка) и добавим его обработчик (строки). Обратите внимание на строку № 76 - здесь мы делаем так, чтобы окно было всегда сверху других - поверх остальных окон. Вот, собственно говоря, и все, что творится у нас в основном методе - вся остальная "движуха" происходит в конструкторе класса Up7 - не забываем добавить к нему throws IOException. В этот раз я решил отойти от традиции и комментарии в программе буду писать не до или после листинга - а в самом тексте её.

package up7;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;

public class Up7 extends JFrame {
   public static Up7 app;
   private TrayIcon iconTr;
   private SystemTray sT = SystemTray.getSystemTray();
   public boolean chetTray = false; //переменная, чтобы был вывод сообщения в трее только при первом сворачивании
   
   public Up7() throws IOException {
	super("Демонстрация сворачивания в трей");
	iconTr = new TrayIcon(ImageIO.read(new File("Ikonka.png")), "Демонстрация сворачивания в трей"); //Ikonka.png - изображение, которое будет показываться в трее - картинка в каталоге исполняемого приложения
	iconTr.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent ev)
      {
        setVisible(true);
        setState(JFrame.NORMAL);
        removeTr();
      }
    });
        //обработчик мыши
        MouseListener mouS = new MouseListener() {
      public void mouseClicked(MouseEvent ev) { }
      public void mouseEntered(MouseEvent ev) { }
      public void mouseExited(MouseEvent ev) {  }
      public void mousePressed(MouseEvent ev) { }
      public void mouseReleased(MouseEvent ev) {}
    };
    iconTr.addMouseListener(mouS);
    MouseMotionListener mouM = new MouseMotionListener() {
      public void mouseDragged(MouseEvent ev) { }
      //при наведении
      public void mouseMoved(MouseEvent ev) {	  
	  boolean flg = false;
	  iconTr.setToolTip("Двойной щелчок - развернуть");       
      }
   };
    
    iconTr.addMouseMotionListener(mouM);
	addWindowStateListener(new WindowStateListener()
    {
      public void windowStateChanged(WindowEvent ev)
      {
        if(ev.getNewState() == JFrame.ICONIFIED)
        {
          setVisible(false);
          addTr();
        }
      }
    });    
            }
			
// метод удаления из трея			
private void removeTr(){ sT.remove(iconTr);}

// метод добавления в трей	
private void addT() {
    try{
      sT.add(iconTr);
      if (chetTray==false) { iconTr.displayMessage("Демонстрация сворачивания в трей", "Программа свернулась", TrayIcon.MessageType.INFO); }
	  chetTray = true;
       }
    catch(AWTException ex)
    { ex.printStackTrace(); }
    }
      
   public static void main(String[] args) throws IOException {     
   app = new Up7 ();
   app.setVisible(true);
   app.setAlwaysOnTop(true);
   app.setSize(777, 777);
   
    //обработчик основного окна - здесь необходимо перечислить все возможные действия - раз взялись обрабатывать, надо делать до конца :)
    app.addWindowListener(new WindowListener() {
        public void windowClosing(WindowEvent winEvent) {
        System.exit(0);//при закрытии окна завершаем программу
		}		
		public void windowActivated(WindowEvent winEvent) {}
        public void windowClosed(WindowEvent winEvent) {}
        public void windowDeactivated(WindowEvent winEvent) {}
        public void windowDeiconified(WindowEvent winEvent) {}
        public void windowIconified(WindowEvent winEvent) {} 
        public void windowOpened(WindowEvent winEvent) {}		
		});  			
	}
}
Именно таким образом можно свернуть приложение на Java в трей, развернуть его двойным щелчком, установить другие дополнительные параметры, а бонусом - сделать так, чтобы оно было поверх других окон в развернутом состоянии. Если у вас имеются комментарии, вопросы, предложения или другие жалобы, то пишите up777up@yandex.ru - я на все отвечу, выполню для вас заказ на java или напишу программу - и все это за весьма скромное вознаграждение.






тегистатьи IT, java, трей





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 19. Оператор if...else JavaScript
String и null на собеседовании по Java


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.