所以我在Java Swing中有這個漂亮的MVC架構的應用程序,現在我想添加一個進度條,並且我對好的設計方法感到困惑,以便將JProgressBar合併到我的視圖中。我應該:進度條+ Java中的MVC =?
將DefaultBoundedRangeModel添加到我的控制器的狀態,並將其導出?
class Model { final private DefaultBoundedRangeModel progress = new DefaultBoundedRangeModel(); public void getProgressModel() { return progress; } public void setProgressCount(int i) { progress.setValue(i); } } class Controller { Model model; int progressCount; void doSomething() { model.setProgressCount(++progressCount); } } class View { void setup(Model m) { JProgressBar progressBar = /* get or create progress bar */ ; progressBar.setModel(m.getProgressModel()); } } /* dilemma: Model allows progress to be exported so technically all of the progress state could be set by someone else; should it be put into a read-only wrapper? */
使用JGoodies數據綁定嘗試關於SpringLayout的視覺狀態連接到我的模型狀態?
class Model { private int progress; public void getProgressCount() { return progress; } public void setProgressCount(int i) { progress = i; } } class View { void setup(Model m) { ProgressBar progressBar = /* get or create progress bar */ ; CallSomeMagicMethodToConnect(m, "progressCount", progressBar, "value"); // is there something that works like the above? // how do I get it to automatically update??? } }
還是別的什麼?
編輯:更具體:可能有人點我現實源一個很好的例子在Java中具有包括一個進度條,一個狀態欄,並有一個體面的MVC實現它的一個應用程序?
順便說一句,你應該看看SwingWorker的 - 它與這個問題涉及(從一個更新的進展後臺任務)。 – 2009-05-21 10:34:14