gpt4 book ai didi

java - MVC 模式在 Java 事件中启用按钮

转载 作者:行者123 更新时间:2023-11-30 06:38:52 25 4
gpt4 key购买 nike

我现在开始使用 MVC 模式,并且有一些我正在思考的事情。想象一下以下情况:

我有一个观点(很明显)。在此 View 中,用户可以选择一个文件,然后单击“加载”按钮。一旦单击此加载按钮,我的 gui 中的所有其他组件都应该启用,因为只要没有加载文件,它们就会设置为“禁用”。

到目前为止我做了什么:

我已经根据以下方案创建了一个 View :

public class GUI implements Observer {
private JButton loadButton, showButton;
private JComboBox nameBox;
private Controller controller = new Controller();

// Initialising Component and so on...
loadButton.addActionListener(... // calls the loadFile()-Method

public void update(Observable arg0, Object arg1) {
// What to do here?

}
}

还有这样的 Controller :

public class Controller extends Observable {
public void loadFile() {
// Load selected File
notifyObservers(); // <--- What should they be notified about in order to enable their component?
}
}

所以我的问题是我不确定通过 Controller 启用组件是否明智。或者是否更好地检查 View ,如果文件已加载然后将组件设置为启用?

最佳答案

您没有显示您的模型,但大概它“知道”文件是否已成功加载。

所以我会简单地告诉 View “模型已经改变”。

然后 View 负责决定显示什么、启用什么按钮或其他。所以它可能有这样的逻辑

if ( model.isFileLoaded() ){
enable buttons
} else {
disable all buttons except the load
if ( model.hadError() ) {
display helpful message (and let user specify a different file)
}
}

这样 Controller 就不需要知道模型中的哪些特定部分对 View 感兴趣,也不需要知道任何关于按钮和 View 状态的一般信息。

关于java - MVC 模式在 Java 事件中启用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1761480/

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