我有一个JInternalFrame可以通过单击X按钮或从菜单中以编程方式关闭。两种方法都以
结束public void internalFrameClosing(InternalFrameEvent e)
以后
public void internalFrameClosed(InternalFrameEvent e)
我想区分这个调用的来源并触发不同的操作(即在通过X按钮关闭我的框架请求确认并稍后dispose()的情况下,从菜单中选择“关闭”的情况下dispose()框架。)
你能建议任何解决方案吗?
答案 0 :(得分:0)
要更改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
什么都不做。这需要程序处理 注册的windowClosing方法中的操作 InternalFrameListener对象。
(请注意,在上面的文档摘录中,我怀疑windowClosing
是一个拼写错误,它们可能意味着internalFrameClosing
)。