जावा मेंकार्य ट्रे(सिस्टम ट्रे) आइकनप्रदर्शित करना/झपकाना
जावा मेंकार्य ट्रे(सिस्टम ट्रे) आइकन प्रदर्शित होता है और झपकता है।
यूटिलिटी क्लासेस जावा एसई 6 मस्टैंग में जोड़ी गई नई सुविधाएँ हैं। java.awt.SystemTray ,java.awt.TrayIcon कक्षाओं का प्रयोग करें. हम एक नमूना एप्लिकेशन भी पेश करेंगे ताकि आप समझ सकें कि इसका उपयोग कैसे करना है।
सिस्टम ट्रे (टास्क ट्रे) फ़ंक्शन
सिस्टम ट्रे (टास्क ट्रे) आपके कंप्यूटर स्क्रीन के नीचे दाईं ओर स्थित छोटे आइकनों की एक पंक्ति है। जावा एसई 6 में, सिस्टम ट्रे कार्यक्षमता का उपयोग करने के लिए निम्नलिखित कक्षाएं जोड़ी गई हैं।
- java.awt.SystemTray
SystemTray वर्ग डेस्कटॉप सिस्टम ट्रे का प्रतिनिधित्व करता है। - java.awt.TrayIcon
ट्रेआइकॉन ऑब्जेक्ट एक ट्रे आइकन का प्रतिनिधित्व करता है जिसे सिस्टम ट्रे में जोड़ा जा सकता है।
ब्लिंकिंग आइकन कैसे बनाएं
आप ब्लिंकिंग आइकन बनाने के लिए निम्नलिखित साइट का उपयोग करना चाह सकते हैं।
स्थानीय आइकन अपलोड करके एक ब्लिंकिंग आइकन बनाएं।
https://www.bannerkoubou.com/anime/
नमूना आवेदन
नमूना एप्लिकेशन निम्नलिखित कार्यों को लागू करने के लिए सिस्टम ट्रे उपयोगिता वर्ग TaskTrayUtil का उपयोग करता है।
- कब शुरू हुआकार्य ट्रेकोआइकनदिखाओ।
- [ब्लिंकिंग बटन] पर क्लिक करेंकार्य ट्रेआइकन फ्लैश हो जाएगा.
गुब्बारा यह संदेश भी प्रदर्शित करता है "मुझे यहाँ से बाहर निकालो!!" - आइकन के झपकने को रद्द करने के लिए [रद्द करें बटन] पर क्लिक करें।
- कार्य ट्रेमुख्य विंडो को डेस्कटॉप पर लाने के लिए आइकन पर सिंगल बायाँ-क्लिक करें।
- कार्य ट्रेडिफ़ॉल्ट पॉपअपमेनू मेनू प्रदर्शित करने के लिए आइकन पर राइट-क्लिक करें।
- जब मुख्य विंडो छोटी हो जाती हैकार्य ट्रेसंग्रहित किया है।
स्रोत कोड प्राप्त करें
स्रोत कोड नीचे से प्राप्त किया जा सकता है। इसके अलावा, संकलन करते समय, कृपया निम्नलिखित आइकन को स्रोत कोड के समान स्थान पर सहेजें।
आयात javax.swing.ImageIcon;
आयात javax.swing.JButton;
आयात javax.swing.JFrame;
आयात javax.swing.JPanel;
आयात javax.swing.SwingUtilities;
आयात javax.swing.UIManager;
/**
* जावा में टास्क ट्रे (सिस्टम ट्रे) आइकन को प्रदर्शित/ब्लिंक करें।
*
* ◆ इस क्लास का अवलोकन
* टास्कट्रे क्लास एक उपयोगिता है जो टास्क ट्रे को संभालती है।
* निम्नलिखित सुविधाएँ प्रदान करता है:
* ・टास्क ट्रे में आइकन प्रदर्शित करें।
* - टास्क ट्रे में एक पॉप-अप संदेश प्रदर्शित करें।
* - टास्क ट्रे को ब्लिंक करें।
*
*◆कैसे उपयोग करें
* नीचे दिए गए विधि तर्क में लक्ष्य JFrame वर्ग को पास करें।
* ・createTray(JFrame targetFrame)
* ・createTray(अंतिम JFrame targetFrame, छवि छवि, पॉपअपमेनू मेनू)
*
*/
सार्वजनिक वर्ग TaskTrayUtil {
निजी स्थैतिक JFrame फ़्रेम;
निजी स्थैतिक पॉपअपमेनू डिफ़ॉल्टमेनू;
निजी स्थैतिक ट्रेआइकॉन ट्रेआइकॉन;
निजी स्थैतिक SystemTray ट्रे = SystemTray.getSystemTray();
निजी स्थैतिक वस्तु INSTANCE_LOCK = नई वस्तु();
/**
* निष्पादन नमूना
* @परम तर्क
*/
सार्वजनिक स्थैतिक शून्य main (String [] args) {
कोशिश {
//LookAndFeel को विंडोज़ पर सेट करें
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
// नियमित आइकन
अंतिम छवि img = नया ImageIcon(
TaskTrayUtil.class.getResource(
“tray_icon.gif”)).getImage();
अंतिम JFrame फ़्रेम =
नया JFrame ("टास्क ट्रे में डिस्प्ले/ब्लिंक आइकन");
फ़्रेम.सेट आकार(300, 100);
फ़्रेम.सेटआईकॉनइमेज(img);
// विंडो छोटा होने पर टास्क ट्रे में स्टोर करें
// दिखाए गए अनुसार विंडो लिस्टनर क्लास जोड़ें।
फ़्रेम.एडविंडोलिस्टनर(नया विंडोएडाप्टर() {
सार्वजनिक शून्य windowIconified(WindowEvent e) {
फ़्रेम.सेटविज़िबल(झूठा);
}
});
जेपीनेल jPanel = नया JPanel();
jPanel.setLayout(नया FlowLayout());
jPanel.setSize(नया आयाम(219, 70));
// पलक झपकते आइकन
अंतिम छवि imgLight =
नया ImageIcon(TaskTrayUtil.class.getResource(
“tray_icon_light.gif”)).getImage();
जेबटन लाइटबटन = नया जेबटन(“ब्लिंक”);
LightButton.addActionListener(नया ActionListener(){
सार्वजनिक शून्य क्रियाप्रदर्शन(एक्शनइवेंट ई) {
onAndOffLight(imgLight, null);
डिस्प्लेमेसेज ("संदेश", "मुझे यहां से बाहर निकालो!!");
}
});
जेबटन कैंसिलबटन = नया जेबटन(“रद्द करें”);
cancelButton.addActionListener(नया ActionListener(){
सार्वजनिक शून्य क्रियाप्रदर्शन(एक्शनइवेंट ई) {
रिप्लेसइमेजविथडिलीट(img);
}
});
jPanel.add(lightButton, null);
jPanel.add(रद्द करेंबटन, शून्य);
फ्रेम.ऐड(जेपैनल);
// प्रसंस्करण समाप्त करें।
फ्रेम.सेटडिफॉल्टक्लोजऑपरेशन(JFrame.EXIT_ON_CLOSE);
// स्क्रीन के केंद्र में फ़्रेम प्रदर्शित करें।
फ़्रेम.सेटलोकेशनरिलेटिवटू(शून्य);
// टास्क ट्रे बनाएं।
TaskTrayUtil.createTray(frame);
फ्रेम.सेटविज़िबल(सही);
} पकड़ें (अपवाद ई) {
ई.प्रिंटस्टैकट्रेस();
}
}
/**
*
*/
स्थैतिक {
createPopupMenu();
}
/**
* कार्य ट्रे में प्रदर्शित होने के लिए एक डिफ़ॉल्ट पॉपअपमेनू मेनू उत्पन्न करता है।
*निम्नलिखित मेनू उपलब्ध हैं.
* ・"टास्क ट्रे से निकालें"
* लक्ष्य एप्लिकेशन को टास्क ट्रे से डेस्कटॉप पर ले जाएं
* इसे बाहर ले जाओ।
* (विंडो सक्रिय करें और इसे सामने लाएँ।)
* - समाप्त किये जाने वाले आवेदन को समाप्त करें।
*/
निजी स्थैतिक शून्य createPopupMenu() {
MenuItem getTrayItem = नया MenuItem ("कार्य ट्रे से निकालें");
getTrayItem.addActionListener(नया ActionListener() {
सार्वजनिक शून्य क्रियाप्रदर्शन(एक्शनइवेंट ई) {
सक्रिय();
}
});
मेनूआइटम निकासआइटम = नया मेनूआइटम('बाहर निकलें');
exitItem.addActionListener(नया ActionListener() {
सार्वजनिक शून्य क्रियाप्रदर्शन(एक्शनइवेंट ई) {
हटाएँTrayIcon();
TaskTrayUtil.frame.setVisible(झूठा);
TaskTrayUtil.frame.dispose();
System.exit(0);
}
});
defaultMenu = नया PopupMenu();
defaultMenu.add(getTrayItem);
defaultMenu.add(exitItem);
}
/**
* एक ट्रे आइकन बनाएं और इसे सिस्टम ट्रे में जोड़ें।
* आइकन पर होने वाली घटनाओं के लिए श्रोता को टारगेटफ्रेम पर सेट करें
करने के लिए सेट *।
* यहां घटना तब होती है जब ट्रे आइकन पर डबल-क्लिक किया जाता है।
* लक्ष्य आवेदन निकालें.
* @param targetFrame लक्ष्य अनुप्रयोग
*/
सार्वजनिक स्थैतिक शून्य createTray(JFrame targetFrame) {
createTray(targetFrame, null, null);
}
/**
* एक ट्रे आइकन बनाएं और इसे सिस्टम ट्रे में जोड़ें।
*
* @param targetFrame लक्ष्य अनुप्रयोग
* @param छवि छवि छवि ट्रे आइकन पर प्रदर्शित करने के लिए।
* यदि शून्य है, तो इसे getIconImage() के साथ targetFrame से प्राप्त किया जा सकता है
* छवि छवियों का प्रयोग करें।
* @param मेनू पॉपअपमेनू टास्क ट्रे में प्रदर्शित करने के लिए।
* यदि शून्य है, तो डिफ़ॉल्ट पॉपअपमेनू प्रदर्शित करें।
*/
सार्वजनिक स्थैतिक शून्य createTray(अंतिम JFrame targetFrame, छवि छवि,
पॉपअपमेनू मेनू) {
// यदि सिस्टम ट्रे समर्थित नहीं है तो बाहर निकलें।
यदि (!SystemTray.isSupported()) {
वापस करना;
}
TaskTrayUtil.frame = targetFrame;
अगर (छवि == शून्य) {
छवि = targetFrame.getIconImage();
}
यदि (मेनू == शून्य) {
मेनू = डिफ़ॉल्टमेनू;
}
ट्रेआइकॉन = नया ट्रेआइकॉन(छवि, targetFrame.getTitle(), मेनू);
ट्रेआईकॉन.सेटइमेजऑटोसाइज(सही);
ट्रेआईकॉन.एडमाउसलिस्टनर(नया माउसएडाप्टर(){
सार्वजनिक शून्य माउस क्लिक किया गया (माउसइवेंट ई) {
यदि (SwingUtilities.isLeftMouseButton(e)) {
सक्रिय();
}
}
});
कोशिश {
ट्रे.जोड़ें(ट्रेआइकॉन);
} पकड़ें (AWTException e1) {
e1.printStackTrace();
}
}
/**
* टास्क ट्रे से आइकन हटाएं।
* एप्लिकेशन समाप्त होने पर कॉल किया जाना चाहिए।
*/
सार्वजनिक स्थैतिक शून्य हटाएँTrayIcon() {
ट्रे.निकालें(ट्रेआईकॉन);
}
/**
* टास्क ट्रे आइकन को ब्लिंक करें।
* यदि आवश्यक हो तो ब्लिंकिंग आइकन पर क्लिक करने पर @param संदेश भेजें
* संदेश को प्रदर्शित करने के लिए सेट करें।
*/
सार्वजनिक स्थैतिक शून्य ऑनएंडऑफलाइट (छवि लाइटआईएमजी, स्ट्रिंग संदेश) {
रिप्लेसइमेज(lightImg);
ChangeLightImgAdapter अनुकूलन =
नया TaskTrayUtil().new ChangeLightImgAdapter(msg);
ट्रेआईकॉन.एडमाउसलिस्टनर(एडैप);
फ़्रेम.एडविंडोलिस्टनर(एडैप);
}
/**
* टास्क ट्रे आइकन बदलें।
* @परम छवि केवल तभी बदलें जब यह वर्तमान आइकन से भिन्न हो।
*/
सार्वजनिक स्थैतिक शून्य प्रतिस्थापन छवि (छवि छवि) {
सिंक्रनाइज़ (INSTANCE_LOCK) {
यदि (!image.equals(trayIcon.getImage())) {
ट्रेआईकॉन.सेटइमेज(छवि);
}
}
}
/**
* टास्क ट्रे आइकन बदलें।
* *यदि आप उस आइकन को पुनर्स्थापित करना चाहते हैं जो किसी कारण से झपका रहा है,
* यह तब तक बेकार लगता है जब तक आप इसे {@link SystemTray#remove(TrayIcon)} से हटा नहीं देते)।
* @परम छवि केवल तभी बदलें जब यह वर्तमान आइकन से भिन्न हो।
*/
सार्वजनिक स्थैतिक शून्य प्रतिस्थापनइमेजविथडिलीट(छवि छवि) {
सिंक्रनाइज़ (INSTANCE_LOCK) {
यदि (!image.equals(trayIcon.getImage())) {
ट्रे.निकालें(ट्रेआईकॉन);
ट्रेआईकॉन.सेटइमेज(छवि);
कोशिश {
ट्रे.जोड़ें(ट्रेआइकॉन);
} पकड़ें (अपवाद ई) {
ई.प्रिंटस्टैकट्रेस();
}
}
}
}
/**
* टास्क ट्रे में एक पॉप-अप संदेश प्रदर्शित करें।
* @परम कैप्शन
* @परम पाठ
*/
सार्वजनिक स्थैतिक शून्य डिस्प्लेमैसेज (स्ट्रिंग कैप्शन, स्ट्रिंग टेक्स्ट) {
यदि (कैप्शन != शून्य || पाठ != शून्य) {
ट्रेआईकॉन.डिस्प्लेमैसेज(कैप्शन, टेक्स्ट,
TrayIcon.MessageType.INFO);
}
}
/**
* लक्ष्य एप्लिकेशन को टास्क ट्रे से डेस्कटॉप पर ले जाएं
* इसे बाहर ले जाओ।
*/
निजी स्थैतिक शून्य सक्रिय() {
// फ़्रेम स्थिति को सामान्य पर लौटाएँ।
टास्कट्रेयूटिल.फ्रेम.सेटएक्सटेंडेडस्टेट(जेफ्रेम.नॉर्मल);
TaskTrayUtil.frame.setAlwaysOnTop(true);
TaskTrayUtil.frame.setVisible(true);
TaskTrayUtil.frame.setAlwaysOnTop(झूठा);
}
/**
* ब्लिंकिंग आइकन पर क्लिक करने पर इवेंट जेनरेट होगा
* श्रोता वर्ग.
*/
क्लास ChangeLightImgAdapter विंडो लिस्टनर, माउस लिस्टनर को लागू करता है {
स्ट्रिंग लाइटइमेजटेक्स्ट;
सार्वजनिक ChangeLightImgAdapter(स्ट्रिंग लाइटइमेजटेक्स्ट) {
यह.lightImageText =lightImageText;
}
/**
* जब टास्क ट्रे आइकन पर क्लिक किया जाता है
* पॉपअप संदेश दिखाएँ.
*/
सार्वजनिक शून्य माउसप्रेस्ड(माउसइवेंट ई) {
TaskTrayUtil.displayMessage(null,lightImageText);
}
/**
* लक्ष्य एप्लिकेशन सक्रिय होने पर पलकें झपकाईं
* वापसी चिह्न.
*/
सार्वजनिक शून्य विंडो सक्रिय (विंडोइवेंट ई) {
TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame
.getIconImage());
TaskTrayUtil.frame.removeWindowListener(यह);
TaskTrayUtil.trayIcon.removeMouseListener(यह);
}
सार्वजनिक शून्य विंडोबंद(विंडोइवेंट ई) {}
सार्वजनिक शून्य विंडोक्लोजिंग(विंडोइवेंट ई) {}
सार्वजनिक शून्य विंडो निष्क्रिय(WindowEvent e) {}
सार्वजनिक शून्य windowDeiconified(WindowEvent e) {}
सार्वजनिक शून्य windowIconified(WindowEvent e) {}
सार्वजनिक शून्य विंडो खोली गई (विंडोइवेंट ई) {}
सार्वजनिक शून्य माउस क्लिक किया गया (माउसइवेंट ई) {}
सार्वजनिक शून्य माउसप्रविष्ट(माउसइवेंट ई) {}
सार्वजनिक शून्य माउसएक्सिटेड(माउसइवेंट ई) {}
सार्वजनिक शून्य माउसरिलीज़(माउसइवेंट ई) {}
}
}