`
somefuture
  • 浏览: 1089541 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

(翻译)第二十二回 JavaFX2.0 进度条和进度指示器

阅读更多

 

原文地址http://download.oracle.com/javafx/2.0/ui_controls/progress.htm

 

ProgressIndicator及其直接子类 ProgressBar提供了指示特定任务正在运行并检测其完成进度的能力。 不过ProgressBar类用来显示一个显示进度完成的条,而 ProgressIndicator类则是将进度动态地显示在一个饼图里。见 Figure 16-1 .

Figure 16-1 Progress Bar and Progress Indicator

 

 

Progress bar and progress indicator.

Description of "Figure 16-1 Progress Bar and Progress Indicator"

 

创建进度控件

 

 Example 16-1 中的代码能够在JavaFX应用中插入一个进度控件。

Example 16-1 Implementing the Progress Bar and Progress Indicator

ProgressBar pb = new ProgressBar(0.6);
ProgressIndicator pi = new ProgressIndicator(0.6); 
 

也可以使用空构造方法创建进度控件而不指定参数。这时候,可以使用setProgress方法为它分配值。 另一个初始化进度控件的方法是使用 ProgressBarBuilder 类,该类包括诸如build和 progress 之类的方法。可以查看API文档去了解更多。

有时候应用并不能缺地in个任务的完成时间,这时进度控件就保持在非确定模式中直到可以确定。Figure 16-2 中是依赖于不同进度变量值的进度控件。

 

Figure 16-2 Various States of Progress Controls

Progress bars and progress indicators in different states.
Description of "Figure 16-2 Various States of Progress Controls"

 

Example 16-2   shows the source code of the application shown in  Figure 16-2 .

Example 16-2 Enabling Different States of Progress Controls

import javafx.application.Application; 
import javafx.geometry.Pos; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar; 
import javafx.scene.control.ProgressIndicator; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class Main extends Application 
{ final Float[] values = new Float[] {-1.0f, 0f, 0.6f, 1.0f};
 final Label [] labels = new Label[values.length];
 final ProgressBar[] pbs = new ProgressBar[values.length];
 final ProgressIndicator[] pins = new ProgressIndicator[values.length];
 final HBox hbs [] = new HBox [values.length]; 
@Override
 public void start(Stage stage) 
{ Group root = new Group(); 
Scene scene = new Scene(root, 300, 150); 
scene.getStylesheets().add("progresssample/Style.css"); 
stage.setScene(scene); 
stage.setTitle("Progress Controls");
 for (int i = 0; i < values.length; i++) 
{ final Label label = labels[i] = new Label(); 
label.setText("progress:" + values[i]); 
final ProgressBar pb = pbs[i] = new ProgressBar(); 
pb.setProgress(values[i]); 
final ProgressIndicator pin = pins[i] = new ProgressIndicator();
 pin.setProgress(values[i]);
 final HBox hb = hbs[i] = new HBox(); 
hb.setSpacing(5);
 hb.setAlignment(Pos.CENTER); 
hb.getChildren().addAll(label, pb, pin);
 } 
final VBox vb = new VBox(); 
vb.setSpacing(5); 
vb.getChildren().addAll(hbs); 
scene.setRoot(vb);
 stage.show(); 
} 
public static void main(String[] args) 
{ launch(args); }
 } 
 

一个在0和1之间的正数用来指示进程的百分比。 比如,0.4代表40%。而一个负数表示进度在非确定模式。用方法isIndeterminate 可以检查进度控件是否在非确定模式中。

 

在界面上指示进度

Figure 16-2 曾经简单的显示了进度控件的所以可能状态。实际应用中,进度值可以通过其他UI元素的值获得。

研究 Example 16-3 中的代码学习如何为基于滑标位置的进度条和指示器设置值。

Example 16-3 Receiving the Progress Value from a Slider

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.control.Slider;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
 
public class Main  extends Application {
 
    @Override
    public void start(Stage stage) {
        Group root = new Group();
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.setTitle("Progress Controls");
 
        final Slider slider = new Slider();
        slider.setMin(0);
        slider.setMax(50);
         
        final ProgressBar pb = new ProgressBar(0);
        final ProgressIndicator pi = new ProgressIndicator(0);
 
        slider.valueProperty().addListener(new ChangeListener<Number>() {
            public void changed(ObservableValue<? extends Number> ov,
                Number old_val, Number new_val) {
                pb.setProgress(new_val.doubleValue()/50);
                pi.setProgress(new_val.doubleValue()/50);
            }
        });
 
        final HBox hb = new HBox();
        hb.setSpacing(5);
        hb.setAlignment(Pos.CENTER);
        hb.getChildren().addAll(slider, pb, pi);
        scene.setRoot(hb);
        stage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

编译运行效果见 Figure 16-3 .

Figure 16-3 Indicating the Progress Set by a Slider

A slider, a progress bar , and a progress indicatior.
Description of "Figure 16-3 Indicating the Progress Set by a Slider"

一个 ChangeListener 对象决定了是否滑动条在动并计算进度条和指示器的值,所以进度控件值的范围是0.0到1.0.

 

0
0
分享到:
评论

相关推荐

    JavaFX2.0 体系结构和框架

    【JavaFX2.0 体系结构和框架】深入解析 JavaFX2.0 是一个基于Java技术的丰富客户端平台,专为开发富互联网应用程序(RIAs)设计,它以其出色的动态画面和美观的用户界面而受到赞誉。尽管中文资料相对较少,但通过对...

    javaFX高级教程JavaFX2.0的FXML语言 中文文档

    ### JavaFX 2.0 的 FXML 语言高级教程 #### 概述 JavaFX 2.0 引入了一种新的声明性标记语言——FXML(发音为 “fizz-le”),这是一种基于 XML 的语言,专门用于定义应用程序的用户界面。通过使用 FXML,开发者...

    JavaFX2.0内建控件教程(全部控件)

    - **Progress Bar and Progress Indicator**:进度条和进度指示器,用于表示操作的完成程度。 - **Hyperlink**:超链接,点击时通常会打开另一个页面或执行其他操作。 - **Tooltip**:工具提示,当鼠标悬停在某个...

    javafx2.0 中文文档.zip

    这个“javafx2.0 中文文档.zip”压缩包包含了关于JavaFX 2.0的中文文档,对于理解和学习这个技术至关重要。 首先,JavaFX 2.0的核心是它的 scenegraph 模型,这是一种基于节点的对象模型,用于构建复杂的用户界面。...

    JavaFX高级教程:JavaFX2.0的FXML语言(中文版)

    JavaFX 2.0 是一个强大的富互联网应用程序(RIA)平台,用于构建具有美观图形界面的应用程序。在JavaFX 2.0中,FXML(FXML Language)被引入,这是一种基于XML的声明性语言,专门用于定义应用程序的用户界面。这个...

    javafx2.0官方例子

    javafx2.0,java,javafx,例子,代码 Sun公司(已于20092008年12月05日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语 言开发富互联网应用程序(RIA)。JavaFX Script编程语言(以下称为JavaFX)是Sun微...

    JavaFX 2.0 電子書 - Pro JavaFX 2

    最新JavaFx 2.0 電子書 In Pro JavaFX 2: A Definitive Guide to Rich Clients with Java Technology, Jim Weaver, Weiqi Gao, Stephen Chin, Dean Iverson, and Johan Vos show you how you can use the JavaFX ...

    JavaFx2.0入门指南

    JavaFX 2.0 入门指南是针对那些希望通过JavaFX快速开发富用户体验应用程序的开发者设计的。这个指南,源自Oracle官方,包含了中英文对照,旨在帮助初学者快速上手。在本文档中,你将学习如何利用JavaFX创建一个名为...

    JavaFX 2.0 Introduction by Example.zip

    JavaFX 2.0 Introduction by Example.zip是javafx2.0的最新书籍《[JavaFX.2.0:Introduction.by.Example].Carl.Dea》上的源码!大家可以下载本书和源码一起看!我都上传了!

    javafx2.0在netbeans插件

    JavaFX 2.0 是 Oracle 公司推出的一个强大的富客户端开发平台,它允许开发者创建具有丰富图形用户界面和交互性的应用程序。NetBeans IDE 是一个流行的开源集成开发环境(IDE),支持多种编程语言,包括 Java。`...

    JavaFX2.0基础教程.pdf

    ### JavaFX2.0基础教程知识点总结 #### 1. JavaFX概览 - **JavaFX认知**:JavaFX是一个由Java技术构建的平台,它旨在简化富互联网应用程序(RIA)的创建与部署过程,这些应用程序能够跨多个平台运行并且具有统一的...

    Javafx 2.0: Introduction by Example

    Javafx 2.0: Introduction by Example

    JavaFX2.0基础教程(整合版)

    JavaFX2.0平台是java客户端设计演进,使应用开发者易于创建和部署跨平台且表现一致的Rich Internet Application(RIAs)。JavafX是由Java技术构建,基于高性能硬件加速的媒体和图形引擎,JavaFX平台提供了一套丰富的...

    javafx_2.0_introduction_by_example

    根据给定文件的信息,我们可以提炼出关于JavaFX 2.0的重要知识点,这些知识点涵盖了JavaFX的基本概念、架构策略、发展历程以及其在图形用户界面(GUI)开发中的应用。 ### JavaFX 2.0:下一代GUI工具包 JavaFX 2.0...

    javaFx2.0 实例

    JavaFX 2.0 是一个强大的Java图形用户界面(GUI)工具包,用于构建桌面、移动和Web应用程序。本实例提供了丰富的控件和功能演示,包括事件处理、数据绑定以及各种图形元素的使用,让我们深入了解一下这些关键知识点...

Global site tag (gtag.js) - Google Analytics