Java MVC:保持我的观点更新

Posted

技术标签:

【中文标题】Java MVC:保持我的观点更新【英文标题】:Java MVC: Keeping my view updated 【发布时间】:2014-01-14 12:47:38 【问题描述】:

我正在尝试练习我的 MVC 布局。我正在努力解决的一个领域是在漫长的过程中保持我的观点更新。

我有一个程序可以在我的网站上进行一些抓取。它将数据返回到我基于 Swing 的 GUI 中的表中。它在我的程序运行的那一刻工作,并在运行结束时最终更新表。

在我的模型中,我将结果存储在某种形式的集合中,可能是 ArrayList。在长进程运行时,它会不断更新。我需要一种根据模型中 Arraylist 结果中的信息更新视图的方法。

我不确定我可以使用什么方法来做到这一点。我正在考虑以某种方式在我的控制器中放置一个方法,该方法会在长进程运行时不断检查结果数组列表并更新视图。或者我应该有一些方法来检查模型何时发生变化?

我真的不知道我需要朝哪个方向去实现它,我只是在寻找一些指针。

这是我目前的控制器,如果您需要更多信息,请告诉我。

public class BrowseController 
private BrowseModel m_model;
private BrowseView m_view;

public BrowseController(BrowseModel model, BrowseView view) 
    m_model = model;
    m_view = view;

    view.addRunListener(new RunListener());
    view.addClearListener(new ClearListener());


class RunListener implements ActionListener
    public void actionPerformed(ActionEvent e)
        m_view.setStatus("running");
        HashSet<String> urls = m_view.getTargetUrls();

        for (String url : urls)
            m_model.processUrl(url);

            m_view.setResult(m_model.getResults());
        

    


class ClearListener implements ActionListener
    public void actionPerformed(ActionEvent e)
        System.out.println("clear");
        m_view.reset();
        m_model.reset();
    

【问题讨论】:

【参考方案1】:

如果您想在列表更新时收到通知,可以使用ObservableCollection。每当您的列表被修改时,它都会触发一个事件。

我也不确定您是否正确使用了该模型。 m_model.processUrl(url); 是二传手吗?如果不是,您应该将逻辑从该方法移到控制器中。模型应该只存储具有最少(或没有)逻辑的数据。

【讨论】:

以上是关于Java MVC:保持我的观点更新的主要内容,如果未能解决你的问题,请参考以下文章

没有行动的观点,如何?

通过 reloadData 更新 UITableView 时保持选择

java.lang.IllegalArgumentException:从给定视图中找不到合适的父级。请提供有效的观点

Django - 更新用户/帐户管理

长文观点丨为什么我不再使用MVC框架?

当对象改变我的观点时不在 wpf