所以我在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