내 JPopupMenu
이 숨겨져있을 때 알림을 받고 싶습니다. 항목을 선택했거나 메뉴를 닫았거나 setVisible(false)
이 (가) 호출 되었기 때문에 알려드립니다. 내 JPopupMenu에 대해 componentHidden이 호출되지 않는 이유는 무엇입니까?
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
이 숨겨져있는 것을 발견하는 다른/더/정확한 방법이 있습니까?
감사합니다,
카메론
관련 질문 (@heycam의 논의 중 일부가 유용 할 수 있음) : h ttp : //stackoverflow.com/questions/2421914/showing-hiding-a-jpopupmenu-from-a-jubutton-focuslistener-not-working – Ash
@Ash에서 제시 하듯이,'PopupMenuListener'를보십시오. – trashgod
우수, 애쉬와 쓰레기 고마워. 어떻게 PopupMenuListener를 간과했는지 전혀 모르겠다! ComponentListeners가 JPopupMenus에 대해 호출되지 않는다는 사실은 재미 없다. – heycam