我有一个包含一些JInternalFrames的JDesktopPane。我希望仅当选择了JInternalFrames之一时才能激活菜单栏上的某些菜单。我尝试使用VetoableChangeListener,其中包含以下代码:

JInternalFrame selectedFrame = desk.getSelectedFrame();
if ((selectedFrame != null)) {
    imageMenu.setEnabled(Boolean.TRUE);
} else {
    imageMenu.setEnabled(Boolean.FALSE);
}


但是结果却不是我所期望的-例如,仅在我第二次添加框架时才启用菜单。当我关闭所有框架时,它保持启用状态。

我该如何进行这项工作?

最佳答案

您必须阅读有关JInternalFrames的基本教程并链接到InternalFrameListener

但是另一种更好的方式是通过编程方式了解所有情况和事件发生的时间,方法是添加PropertyChangeListener(如示例Getting All Frames in a JDesktopPane Container所示),通过添加PropertyChangeListener您可以监听these events

07-24 15:24