javafx.scene.control中progressbar初步

看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中配好下载下来的,一般都可以找到的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值