当我的JPopupMenu
被隐藏时,无论是因为选择了一个项目、菜单被取消或者调用了setVisible(false)
,我都希望得到通知。这是我的测试代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class A extends ComponentAdapter implements Runnable, ActionListener {
private JButton b;
public static void main(String[] args) {
EventQueue.invokeLater(new A());
}
public void run() {
JFrame f = new JFrame("Test");
b = new JButton("Click me");
b.addActionListener(this);
f.add(b);
f.pack();
f.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
JPopupMenu pm = new JPopupMenu();
pm.addComponentListener(this);
pm.add("Popup...");
pm.add("...menu!");
pm.show(b, 10, 10);
}
public void componentShown(ComponentEvent e) { System.out.println("componentShown"); }
public void componentHidden(ComponentEvent e) { System.out.println("componentHidden"); }
}
无论我如何与菜单交互,两个 ComponentListener 方法都没有被调用。为什么呢?有没有不同/更好/正确的方法来找出我的 JPopupMenu 何时隐藏?
谢谢, Cameron
PopupMenuListener
。 - trashgodPopupMenuListener
的唯一原因是与普通的ComponentListener
不匹配。我总是对实现EventListener
的大量类感到敬畏: file:///Users/Shared/javadoc/jdk6/api/java/util/EventListener.html - trashgod