进度条+;Java中的MVC=?
所以我在JavaSwing中有了这个漂亮的、漂亮的MVC架构的应用程序,现在我想添加一个进度条,我对将JProgressBar合并到我的视图中的好的设计方法感到困惑。我应该:进度条+;Java中的MVC=?,java,model-view-controller,swing,progress-bar,Java,Model View Controller,Swing,Progress Bar,所以我在JavaSwing中有了这个漂亮的、漂亮的MVC架构的应用程序,现在我想添加一个进度条,我对将JProgressBar合并到我的视图中的好的设计方法感到困惑。我应该: 将DefaultBoundedRangeModel添加到控制器的状态,然后将其导出 class Model { final private DefaultBoundedRangeModel progress = new DefaultBoundedRangeModel(); public void ge
- 将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绑定尝试将JProgressBar的可视状态连接到我的模型的状态
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实现 我在MVC中遇到的问题是定义模型的抽象级别
- 模型可以是UI组件的某种对象
- 模型也可以是程序本身的其他类型的对象
- 模型可以和商业模型一样高李>
顺便说一句,你应该看看SwingWorker——它专门处理这个问题(从后台任务更新进度)。
/**
* Observer on progress changes
*/
public interface IProgressListener {
public void setProgress(ProgressEvent e);
}
public class ProgressEvent extends ... {
private int progressCount;
// setter + getter
...
}
class Model {
public void addProgressListener(IProgressListener l);
protected void fireProgressChange(ProgressEvent e); // call .setProgress() on listeners
}
class Controller {
private Model model;
}
class View extends ProgressBar implements IProgressListener {
...
// IProgressListener implementation
public void setProgress(ProgressEvent e) {
this.setValue(e.getProgress());
}
...
}