我有一个扩展JRadioButtonMenuItem的类。有什么方法可以在我的类的实例从UI处理时捕获事件。我不确定哪个听众必须抓住这个事件。
更清楚地说,我有一组JRadioButtonMenuItem
实例(实际上是扩展JRadioButtonMenuItem
的类的实例),根据我将实例作为监听器添加到实例的实现我的班级,说EventSourceEx
并倾听。当JRadioButtonMenuItem
的实例被创建时,这将被添加为监听器。
因此,当包含上述菜单项实例的 JMenu 消失时,我想从JRadioButtonMenuItem
实例中删除EventSourceEx
。所以我的想法是,如果我可以从JRadioButtonMenuItem
或JMenu
获取一个偶数,我会收到通知,菜单/ Menuitem正在处理,以便我将从中移除实例EventSourceEx
。
JMenu
或JRadioButtonMenuItem
是否有任何机制可以通知即使它消失了。
答案 0 :(得分:1)
而不是试图捕获此事件。专注于捕获您关心的事件,即处理按钮所在的容器。例如,如果按钮位于正在关闭的帧上,则添加WindowListener
。如果以编程方式删除该按钮并重新验证,则将该代码中的调用添加到您需要执行的逻辑中。
答案 1 :(得分:1)
将属性更改的侦听器添加到JMenuItem组件。
覆盖propertyChange()方法
public void propertyChange(PropertyChangeEvent theEvt)
{
if(!isShowing()&&“ancestor”.equalsIgnoreCase(theEvt.getPropertyName())&& theEvt.getNewValue()== null)
{
// Youcan remove your listener
}
}
尝试这个......让我知道