gpt4 book ai didi

java - Action 监听器在 MVC 应用程序中不起作用

转载 作者:行者123 更新时间:2023-11-30 03:27:06 24 4
gpt4 key购买 nike

我有以下问题:我有一个 UI 非常简单的小型应用程序。已实现的 Action Listeners 在那里工作得很好。但是,对话框窗口的Action Listener及其Save按钮只是拒绝打印测试消息。

代码相当冗长,所以为了方便我将其放在 hastebin 上。

http://hastebin.com/eqokilawiv.avrasm

我怀疑这可能与 Controller 处理添加 OptionsWindow 监听器的方式有关。

我尝试了一些方法来看看它们是否有效:

  • OptionsWindow拥有单独的 Controller ,我在其中实现与我的MainWindow完全相同的Action Listeners。遗憾的是它没有解决问题。

  • MainController 从单个 ButtonListener 类添加所有 Action Listeners

  • MainController添加来自两个不同Action Listener类的所有Action Listeners

此时我已经没有想法了,我怀疑我可能错过了一些重要的东西来理解为什么它不起作用。我在实现 MVC 方面还很陌生,所以我欢迎任何反馈。

最佳答案

您将actionListener添加到默认构造函数创建的Button中,然后在actionListener中:

optionsWindow = new OptionsWindow(mainWindow.getMainFrame());

您创建了新的OptionsWindow,但没有连接到SaveButton 的actionListener。所以添加就足够了:

    if (ev.getSource() == mainWindow.optionsButton) {
System.out.println("Options pressed");
optionsWindow = new OptionsWindow(mainWindow.getMainFrame());
optionsWindow.addOptionsButtonListener(new OptionsButtonListener()); //<-- once again add actionListener
}

它可以很好地配合您的代码。

另一个解决方案是删除默认构造函数,并使用方法代替 mainFrame 参数:

public void getVisibleFrame(){
optionsDialog.setVisible(true);
}

在actionListener中:

if (ev.getSource() == mainWindow.optionsButton) {
optionsWindow.getVisibleFrame();
}

但是我不知道它是否与MVC兼容。

关于java - Action 监听器在 MVC 应用程序中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29943885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com