2011-07-03 47 views
9

Tôi muốn chương trình của mình hiển thị biểu tượng trong Khu vực Trạng thái TaskBar gần đồng hồ trong Windows và tìm cách làm như vậy.Ẩn chương trình của tôi trong Khay Hệ thống trong Windows

Điều này là, tôi muốn chương trình của mình luôn mở trong Khu vực trạng thái nếu chữ "X" được nhấn trên cửa sổ, nhưng không được đặt trong Khay hệ thống, nhưng tôi không biết cách thực hiện và tìm kiếm trên Google không trợ giúp (có thể tôi không tìm kiếm đúng điều khoản).

Chỉnh sửa: Tôi nghĩ rằng tôi đã sử dụng sai cụm từ. Tôi biết làm thế nào để có biểu tượng của chương trình của tôi trong khu vực thông báo, những gì tôi muốn là để ẩn nó trong khu vực mà nó thường được hiển thị khi bạn giảm thiểu một cửa sổ.

+0

Tên chính thức cho _system tray_ là _notification area_ (xem [ở đây] (http://blogs.msdn.com/b/oldnewthing/archive/2003/09/10/54831.aspx)). Điều đó có thể hỗ trợ tìm kiếm của bạn. – user786653

+0

@ user786653 Vui vẻ ngay cả khi triển khai Java nằm trong khay hệ thống tên. Đó là một chiến đấu với raymond và đồng đã bị mất - cùng với hướng dẫn chính thức của họ cách sử dụng nó (đó là imo một điều tốt ~) – Voo

+0

Voo: Việc triển khai Java hoạt động trên nhiều hệ thống hơn Windows và các trình quản lý cửa sổ khác. khay «... – Joey

Trả lời

7

Tôi biết cách biểu tượng của chương trình trong vùng thông báo, điều tôi muốn là ẩn nó trong khu vực thường được hiển thị khi bạn thu nhỏ cửa sổ.

Sau đó, không sử dụng khay hệ thống.

Có điều là, tôi muốn chương trình của tôi ở lại mở trong khu vực Status nếu "X" được nhấn trên cửa sổ,

frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 
+0

Cảm ơn. Tôi đã không nhìn vào các phương pháp chính xác. Tôi đoán tôi nên đã tìm ra rằng bằng cách làm cho nó không nhìn thấy nó sẽ ẩn nó. –

2

Tôi đoán bạn muốn nút trên thanh tác vụ phải được loại bỏ khi bạn hạn chế tối đa các hình thức chính. Bạn đạt được điều này bằng cách petting tài sản có thể nhìn thấy của nó thành false, tuy nhiên bạn làm điều đó với khung công tác Java của bạn.

4
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.UIManager; 

public class HideToSystemTray extends JFrame { 
    TrayIcon trayIcon; 
    SystemTray tray; 
    JButton button; 

    HideToSystemTray() { 
     super("SystemTray test"); 
     button = new JButton("Press"); 
     button.setBounds(10, 10, 40, 40); 
     setUndecorated(true); 
     getContentPane().add(button); 
     System.out.println("creating instance"); 
     try { 
      System.out.println("setting look and feel"); 
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
     } catch (Exception e) { 
      System.out.println("Unable to set LookAndFeel"); 
     } 
     if (SystemTray.isSupported()) { 
      System.out.println("system tray supported"); 
      tray = SystemTray.getSystemTray(); 

      Image image = Toolkit.getDefaultToolkit().getImage("C:\\Users\\Sandipan\\Desktop\\cutter.png"); 
      ActionListener exitListener = new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 
        System.out.println("Exiting...."); 
        System.exit(0); 
       } 
      }; 
      PopupMenu popup = new PopupMenu(); 
      MenuItem defaultItem = new MenuItem("Exit"); 
      defaultItem.addActionListener(exitListener); 
      popup.add(defaultItem); 
      defaultItem = new MenuItem("Open"); 
      defaultItem.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 
        tray.remove(trayIcon); 
        setVisible(true); 
        System.out.println("Tray icon removed"); 
       } 
      }); 
      popup.add(defaultItem); 
      trayIcon = new TrayIcon(image, "SystemTray Demo", popup); 
      trayIcon.setImageAutoSize(true); 
     } else { 
      System.out.println("system tray not supported"); 
     } 

     button.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       //Execute when button is pressed 
       System.out.println("You clicked the button"); 
       try { 
        tray.add(trayIcon); 
        setVisible(false); 
        System.out.println("added to SystemTray"); 
       } catch (AWTException ex) { 
        System.out.println("unable to add to tray"); 
       } 
      } 
     }); 


    /* addWindowStateListener(new WindowStateListener() { 
    public void windowStateChanged(WindowEvent e) { 
     if(e.getNewState()==ICONIFIED){ 
      try { 
       tray.add(trayIcon); 
       setVisible(false); 
       System.out.println("added to SystemTray"); 
      } catch (AWTException ex) { 
       System.out.println("unable to add to tray"); 
      } 
     } 
     if(e.getNewState()==7){ 
      try{ 
       tray.add(trayIcon); 
       setVisible(false); 
       System.out.println("added to SystemTray"); 
      }catch(AWTException ex){ 
       System.out.println("unable to add to system tray"); 
      } 
     } 
     if(e.getNewState()==MAXIMIZED_BOTH){ 
      tray.remove(trayIcon); 
      setVisible(true); 
      System.out.println("Tray icon removed"); 
     } 
     if(e.getNewState()==NORMAL){ 
      tray.remove(trayIcon); 
      setVisible(true); 
      System.out.println("Tray icon removed"); 
     } 
    } 
    }); */ 
    setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\Sandipan\\Desktop\\cutter.png")); 

    setVisible(true); 
    setSize(300, 200); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

public static void main(String[] args) { 
    new HideToSystemTray(); 
} 
} 
+1

Vui lòng thêm một số chi tiết về mã và lý do bạn nhận xét một phần lớn của mã để người khác dễ hiểu hơn –

Các vấn đề liên quan