有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing在java中正确注销用户

我正在使用Eclipse作为我的IDE

我已经有登录代码了 -检查用户和密码是否匹配 -检查数据库中帐户的会话列是否为“已登录”。如果登录用户为false,则提示用户

当注销时,我有一个注销按钮,单击该按钮可将“登录”更改为“注销”。 现在的问题是,用户没有单击“注销”按钮,而是关闭了应用程序。我尝试在帧“关闭”时创建一个窗口侦听器,然后将其重定向到“注销”按钮,这解决了我的问题,因此我将每个帧分配到“窗口关闭”时重定向到“注销”按钮操作

我的应用程序是这样工作的:我的应用程序有多个帧。登录后会出现主页,然后会有4个按钮指引您进入其他模块。在主页中,当您点击模块A时,主页将被处理并弹出模块A框架,如果您点击“后退”按钮,模块A将被处理并再次弹出主页,点击模块b将被处理并弹出模块b框架,依此类推

场景1:

~已登录-将用户状态从“已注销”更改为“已登录”,将用户从登录页面重定向到主页

~在主页上,我忘了该怎么做,所以我只需关闭应用程序,因为我有一个“窗口关闭”侦听器,它会将“登录”状态更改为“注销”,这很好

场景2:

~已登录-将用户状态从“已注销”更改为“已登录”,将用户从登录页面重定向到主页

~在主页上,我单击模块A,该模块将处理主页,并将“登录”状态更改为“注销”,因为主页窗口已关闭

我如何修复scenerio 2?因为关闭一个框架会让我注销,但我仍然只使用另一个名为moduleA的框架

如果你们不明白我在说什么,请提问,我会尽快回答。我不太善于解释我的处境,我很抱歉:'(


共 (1) 个答案

  1. # 1 楼答案

    所以我猜你得到的是这样的:

    void onWindowDispose() {
        logMeOut();
    }
    

    我建议使用类似计数器的东西:

    int windowCount;
    
    void onWindowCreate() {
        ++windowCount;
    }
    
    void onWindowDispose() {
         windowCount;
    
        if(windowCount == 0)
            logMeOut();
    }
    

    你可能不完全使用计数器,但我希望你能明白。您只应在所有窗口关闭时注销,而不应仅在其中任何一个窗口关闭时注销

    此外,如果“多帧”表示“多帧”,请参见"The Use of Multiple JFrames, Good/Bad Practice?"