Java 具有动态GUI的MVC事件系统

Java 具有动态GUI的MVC事件系统,java,swing,events,model-view-controller,Java,Swing,Events,Model View Controller,我正在使用swing开发gui系统,并尝试遵循模型-视图-控制器模型。在实现我的事件系统以便在gui上发生事情时视图可以与控制器通信时,我有点困惑 我的gui是动态的,因此我有一个包含其他JPanel的侧面板。其中一个是LoginPanel,当有人试图登录时,它会抛出一个LoginEvent。因为我希望我的侧面板是动态的,侧面板不知道LoginPanel存在,它只是绘制它被告知要绘制的内容 当我启动程序时,模型和视图分别启动,并且控制器获得模型和视图的实例 使用MVC系统,当LoginPanel

我正在使用swing开发gui系统,并尝试遵循模型-视图-控制器模型。在实现我的事件系统以便在gui上发生事情时视图可以与控制器通信时,我有点困惑

我的gui是动态的,因此我有一个包含其他JPanel的侧面板。其中一个是LoginPanel,当有人试图登录时,它会抛出一个LoginEvent。因为我希望我的侧面板是动态的,侧面板不知道LoginPanel存在,它只是绘制它被告知要绘制的内容

当我启动程序时,模型和视图分别启动,并且控制器获得模型和视图的实例


使用MVC系统,当LoginPanel在我的gui上是动态的,并且不总是存在时,我如何告诉LoginPanel控制器(实现LoginEventListener)想要侦听它?

存在和可见之间存在差异。只需使您的
LoginPanel
始终存在,但使用
setVisible
隐藏和显示它。这将是最简单的解决方案。

Uhm,你的问题是?使用
String
s作为密码也是不好的做法:@home My view有一个侧面板,侧面板有一个登录面板。LoginPanel存储LoginListeners,并在有人尝试登录时将事件发送给这些侦听器。我希望侧面板是动态的,因此它不应该知道LoginPanel存在,那么如果视图不一定知道LoginPanel存在,我如何告诉LoginPanel添加控制器作为侦听器?也许我只是错误地考虑了MVC系统,但我所做的似乎真的有缺陷。当您将组件设置为可见/不可见时,布局管理器是否会自动更新?例如,如果我对某些内容使用流布局并隐藏某个组件,其他组件是否会调整以适应该组件不可见?(很抱歉,由于我现在正在使用手机,无法进行测试)您可能需要拨打
revalidate
validate
或其他电话。当我使用Swing时,如果我没记错的话,Javadocs中并没有很好地记录这一点,但那是在StackOverflow.com出现之前——您现在应该可以毫不费力地了解它是如何工作的。