Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MVC模型通知要查看的事件_Java_Model View Controller_Gtk_Agents Jade - Fatal编程技术网

Java MVC模型通知要查看的事件

Java MVC模型通知要查看的事件,java,model-view-controller,gtk,agents-jade,Java,Model View Controller,Gtk,Agents Jade,当我的模型更改时,我正在尝试向视图通知事件。 我的模型已经扩展了另一个类(来自JADE平台的代理),所以我不能使用Observale。我不想做真正的MVC,只想从我的模型中触发一个事件并改变我的视图。在我的例子中,只有一个视图、模型和控制器 模型 我的控制器 public class SeekerController { private final AgentSeeker model; private final AgentSeekerView view; public

当我的模型更改时,我正在尝试向视图通知事件。 我的模型已经扩展了另一个类(来自JADE平台的代理),所以我不能使用Observale。我不想做真正的MVC,只想从我的模型中触发一个事件并改变我的视图。在我的例子中,只有一个视图、模型和控制器

模型

我的控制器

public class SeekerController {
    private final AgentSeeker model;
    private final AgentSeekerView view;

    public SeekerController(AgentSeeker model, AgentSeekerView view) {
        this.model = model;
        this.view = view;
    }
}

当我将音乐添加到我的MusicPurchased列表时,我也想将此音乐从视图添加到我的文本缓冲区。

调用什么
AgentSeeker.buyMusic()
?你的模型和视图都是Gobject吗?这是一个来自JADE的代理,他有一个OneShotBehavior,名为buyMusic()。简单地说,就是模型本身。我的视图使用TextView(GObject),我的模型使用ArrayList(Object)。目前这两者之间没有联系。您可以在这里看到完整的实现代码
public class AgentSeekerView extends AbstractAgentView {
    TextView textViewMusicPurchased;

    public AgentSeekerView() {
        super("AgentSeeker.glade");
    }

    protected void initComposant() {
        super.initComposant();
        textViewMusicPurchased = (TextView) builder.getObject("music_purchased");
    }

    public void addMusicPurchasedToConsole(String music) {
        TextBuffer textBuffer = textViewMusicPurchased.getBuffer();
        textBuffer.insert(textBuffer.getIterEnd(), music + '\n');
    }

}
public class SeekerController {
    private final AgentSeeker model;
    private final AgentSeekerView view;

    public SeekerController(AgentSeeker model, AgentSeekerView view) {
        this.model = model;
        this.view = view;
    }
}