我試圖在java swing ui應用程序中關注MVP(特別是被動視圖)模式。模型視圖演示者和複合視圖
該應用程序的基本設計提醒了一個嚮導控制。屏幕分爲兩個主要部分:
- 積極的看法。
- 一個靜態導航欄,帶導航按鈕。
用戶可以使用按鈕來更改活動視圖,但總是顯示欄。我有一堆不同的事業,每個人都有自己的演示者,視圖界面和視圖實現(使用JPanel)。然後我有一個Shell演示者,使用JFrame查看intefrace和視圖實現。這個想法是,外殼將首先加載並始終顯示,顯示底部導航欄併爲活動視圖留出空間。外殼主持人將允許設置當前激活畫面,有點像這樣:
interface View {
}
class Presenter {
View view;
public Presenter(View view) {
this.view = view;
}
public View getView() {
return view;
}
}
interface ShellView extends View {
void setActiveView(View activeView);
}
class ShellPresenter extends Presenter {
private ShellView shellView;
public void setActivePresenter(Presenter activePresenter) {
shellView.setActiveView(activePresenter.getView());
}
}
class ShellFrame implements ShellView {
private JFrame frame;
private JPanel activePanel;
private JPanel navigationBar;
public ShellFrame() {
Container c = frame.getContentPane();
c.add(activePanel);
c.add(navigationBar);
}
public setActiveView(View activeView) {
???
}
}
的問題是在setActiveView方法:我不知道如何將活動視圖設置爲activePanel,當View接口是通用的因此他們對JPanels一無所知。顯然,我不希望我的演示者也知道JPanels。
你有沒有想過如何做到這一點?這些答案都不是特別好。我只是發佈這個線程:http://stackoverflow.com/questions/17836421/how-dumb-can-mvp-views-really-be – durron597 2013-07-24 14:13:49