मेरे पास एक पॉपअप है जो उपयोगकर्ता द्वारा बटन पर क्लिक करने पर दिखाया गया है। मैं पॉपअप को छिपाने के लिए चाहते हैं जब निम्न घटनाओं के किसी भी होते हैं:जब आप कहीं और क्लिक करते हैं तो स्विंग पॉपअप को कैसे छिपाते हैं
- उपयोगकर्ता आवेदन में कहीं और क्लिक करता है। (उदाहरण के लिए पृष्ठभूमि पैनल)
- उपयोगकर्ता एप्लिकेशन को कम करता है।
जेपीओपअपमेनू का यह व्यवहार है, लेकिन मुझे सिर्फ जेमेनू इटम्स से अधिक की आवश्यकता है। निम्नलिखित कोड ब्लॉक वर्तमान उपयोग को प्रदर्शित करने के लिए एक सरलीकृत चित्रण है।
import java.awt.*;
import java.awt.event.ActionEvent;
import javax.swing.*;
public class PopupTester extends JFrame {
public static void main(String[] args) {
final PopupTester popupTester = new PopupTester();
popupTester.setLayout(new FlowLayout());
popupTester.setSize(300, 100);
popupTester.add(new JButton("Click Me") {
@Override
protected void fireActionPerformed(ActionEvent event) {
Point location = getLocationOnScreen();
int y = (int) (location.getY() + getHeight());
int x = (int) location.getX();
JLabel myComponent = new JLabel("Howdy");
Popup popup = PopupFactory.getSharedInstance().getPopup(popupTester, myComponent, x, y);
popup.show();
}
});
popupTester.add(new JButton("No Click Me"));
popupTester.setVisible(true);
popupTester.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
यह एक अच्छा समाधान है। Popup में WindowFocusListener इंटरफ़ेस जोड़ना चाल करता है। मैं एक जेडियोलॉग के बजाय एक जेविंडो का उपयोग कर समाप्त हुआ क्योंकि मैं खिड़की की सजावट नहीं चाहता था। मैं अंतिम समाधान पोस्ट करूंगा। –