gpt4 book ai didi

java - 绕过 actionPerformed() 返回 void

转载 作者:行者123 更新时间:2023-12-02 08:20:58 24 4
gpt4 key购买 nike

我正在尝试使用MVC设计。

在模型中我想要一个这样的方法

public boolean changeSomeData(...){
boolean b;
//create a dialog with an OK button
return b;
}

如果实际进行了更改,我希望该方法返回 TRUE。更改是在“确定”按钮的 actionPerformed 方法内完成的。

我的问题是我不能写 b=true;在 OK 按钮的 actionPerform 内,因为我必须将 b 声明为 Final 才能在 actionPerformed() 中使用它。

我所做的是创建一个类

private class MyBoolean {
boolean b;
}

然后

public boolean changeSomeData(...){
MyBoolean myBoolean;
//create a dialog with an OK button
actionPerformed(){
//make changes in the data
myBoolean.b=true;
}
boolean b = myBoolean.b;
return b;
}

但是我对这个解决方案感觉不太好,我想知道我所做的是否正确以及是否有更好的解决方案。如果没有进行更改,我是否应该更好地抛出异常? (例如,如果用户单击“取消”而不是“确定”)

最佳答案

In the model I wanted a method like this ... //create a dialog with an OK button

我想说这已经是一个缺陷,因为模型不应该直接对 View 执行任何操作。

更好的方法是打开对话框(使用 Controller ),为“OK”的 ActionEvent 注册 Controller (因此 actionPerformed),然后执行其中应该完成的任何更改方法。

编辑:

您可能需要考虑以下粗略方法:

View 将自身或关联的类注册到模型作为监听器。每当模型更改时,它都会触发事件来通知 View 更改。

Controller 在 View 上注册自身,并在 View 更改时收到通知。如果用户更改数据,则 Controller 可能会打开对话框并仅提交用户信号“OK”的更改。因此,模型永远不会检查自己是否需要更改数据。这实际上是 Controller 的任务,如果 Controller 将更改传递给模型,它应该应用它们。

关于java - 绕过 actionPerformed() 返回 void,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5460224/

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