看Arcgisfor java sdk开发实例代码中有一个程序用到了progressbar,以前是做C#开发,现如今转到java开发,发现大同小异,区别是java的库更多,集成开发更方便,难怪现在做java开发的人那么多。实例程序progressbar的使用是这样的:
mapView.addDrawStatusChangedListener(e -> {
// check to see if draw status is in progress
if (e.getDrawStatus() == DrawStatus.IN_PROGRESS) {
// reset progress bar as in progress
progressBar.setProgress(-100.0);
// check to see if draw status is complete
} else if (e.getDrawStatus() == DrawStatus.COMPLETED) {
// set progress bar as complete
progressBar.setProgress(100.0);
}
});
从以前使用progressbar的经验来看(没做过java开发),这里的使用有点奇怪:在处理过程中时设置为-100,处理完后设置为100,而且没有看到设置progress的最小最大值,默认应该是100吧,另外程序运行在刷新等待过程中,progress显示的不是固定的值而是进度条来回摆动,明明设置的是-100啊,于是突然就对这个有点兴趣,于是按F4跟踪进去发现是javafx.scene.control package中的一个progressindicator类,这个函数上面的说明:
/**
* The actual progress of the ProgressIndicator. A negative value for
* progress indicates that the progress is indeterminate. A positive value
* between 0 and 1 indicates the percentage of progress where 0 is 0% and 1
* is 100%. Any value greater than 1 is interpreted as 100%.
*/
private DoubleProperty progress;
public final void setProgress(double value) {
progressProperty().set(value);
}
原来它有个负数的状态代表不确定:indeterminate,正数0-1之间的double类型数值代表进行百分比,所有大于1的数字都表示100%,哎,早说啊,示例代码直接写-1和1不就得了,弄个-100跟-1一样的效果,为了验证,我将调用代码改成这样:
mapView.addDrawStatusChangedListener(e -> {
// check to see if draw status is in progress
if (e.getDrawStatus() == DrawStatus.IN_PROGRESS) {
// reset progress bar as in progress
progressBar.setProgress(0.4);
// check to see if draw status is complete
} else if (e.getDrawStatus() == DrawStatus.COMPLETED) {
// set progress bar as complete
progressBar.setProgress(1.0);
}
});
果然,在处理过程中不再有来回摆动的进度,而是固定的0.4位置,而处理完后仍然是满的进度条状态,跟设置成100一样的效果。
另外这个setprogress函数是progressindicator类的成员函数,而progressbar则是继承了progressindicator,看来重写了对应的方法,将progressbar的定义改成progressindicator,看到其基类原来是个圆形的刷新盘,也蛮好看。
以下是我刚开始接触java的一些总结,为了让自己更快理解这里面涉及到的概念,只好将它和C#类比,不知道对不对。
1.jdk是java的基础库,类似C#中的.net framework
2.package类似C#的命名空间
3.每个jre打包库类似C#中的dll库,要想定位到jre,直接看其package然后大概猜测在依赖库的什么地方,可能是jdk中的也可能是gradle或者maven中配好下载下来的,一般都可以找到的。