单击其他位置时如何隐藏 Swing 弹出窗口
我有一个弹出窗口,当用户单击按钮时显示。我想在发生以下任何事件时隐藏弹出窗口:
- 用户单击应用程序中的其他位置。(例如背景面板)
- 用户最小化应用程序。
JPopupMenu有这种行为,但我需要的不仅仅是JMenuItems。下面的代码块是演示当前用法的简化图示。
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);
}
}