Java JInternalFrame 配置查找源

Java JInternalFrame dispose find source

我有一个 JInternalFrame,可以通过单击 X 按钮或以编程方式从菜单中关闭它。两种方法都以

结束
public void internalFrameClosing(InternalFrameEvent e) 

以后

public void internalFrameClosed(InternalFrameEvent e) 

我想区分此调用的来源并触发不同的操作(即在通过 X 按钮关闭我的框架的情况下要求确认并稍后处理(),在选择 "close" 的情况下从菜单中只需处理()框架)。

您能提出任何解决方案吗?

要更改 X 按钮的行为,您可以将默认关闭操作设置为 DO_NOTHING_ON_CLOSE,并添加一个 InternalFrameListener 来处理关闭确认请求和关闭框架如果需要:

        internalFrame.setDefaultCloseOperation(JInternalFrame.DO_NOTHING_ON_CLOSE);

        internalFrame.addInternalFrameListener(new InternalFrameListener() {

            @Override
            public void internalFrameOpened(final InternalFrameEvent e) {

            }

            @Override
            public void internalFrameClosing(final InternalFrameEvent e) {

                // Do your confirmation stuff !!
                // Dispose the internal frame if needed !!

            }

            @Override
            public void internalFrameClosed(final InternalFrameEvent e) {

            }

            @Override
            public void internalFrameIconified(final InternalFrameEvent e) {

            }

            @Override
            public void internalFrameDeiconified(final InternalFrameEvent e) {

            }

            @Override
            public void internalFrameActivated(final InternalFrameEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void internalFrameDeactivated(final InternalFrameEvent e) {
                // TODO Auto-generated method stub

            }
        });

DO_NOTHING_ON_CLOSE

Do nothing. This requires the program to handle the operation in the windowClosing method of a registered InternalFrameListener object.

(请注意,在上面的文档摘录中,我怀疑 windowClosing 是一个错字,他们可能意味着 internalFrameClosing)。

参见:JInternalFrame.setDefaultCloseOperation