JavaFX threading demo
来源:互联网 发布:小型软件课程设计 编辑:程序博客网 时间:2024/06/02 04:07
package JavaFXThreading;import java.util.Timer;import java.util.TimerTask;import java.util.logging.Level;import java.util.logging.Logger;import javafx.application.Application;import javafx.application.Platform;import javafx.concurrent.Task;import javafx.event.ActionEvent;//import javafx.event.EventHandler; //JackWang_0001import javafx.geometry.Insets;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control.Label;import javafx.scene.control.ProgressBar;import javafx.scene.layout.StackPane;import javafx.scene.layout.VBox;import javafx.stage.Stage;//some useful info://http://docs.oracle.com/javase/8/javafx/interoperability-tutorial/concurrency.htm//https://docs.oracle.com/javafx/2/threads/jfxpub-threads.htm//http://www.java2s.com/Tutorials/Java/JavaFX/1510__JavaFX_WebView.htm//http://www.oracle.com/technetwork/java/javase/overview/javafx-overview-2158620.html//http://www.java2s.com/public class JavaFXThreading extends Application{ private static final int MAX = 100; Thread miTaskThread; Thread miRunnableThread; Timer miTimer; MiTask miTask; MiRunnable miRunnable; MiTimerTask miTimerTask; @Override public void start(Stage primaryStage) { miTask = new MiTask(); ProgressBar progressBarTask = new ProgressBar(); progressBarTask.setProgress(0); progressBarTask.progressProperty().bind(miTask.progressProperty()); ProgressBar prgbarRunnable = new ProgressBar(); prgbarRunnable.setProgress(0); miRunnable = new MiRunnable(prgbarRunnable); ProgressBar prgbarTimerTask = new ProgressBar(); prgbarTimerTask.setProgress(0); miTimerTask = new MiTimerTask(prgbarTimerTask); Button btnStart = new Button("Start Task"); btnStart.setOnAction ( (ActionEvent evt)-> { miTaskThread = new Thread(miTask); miTaskThread.setDaemon(true); miTaskThread.start(); miRunnableThread = new Thread(miRunnable); miRunnableThread.start(); miTimer = new Timer(); miTimer.scheduleAtFixedRate(miTimerTask, 0, 100); } ); /* JackWang_0001 btnStart.setOnAction ( //This anonymous inner class creation can be turned into a lambda expression new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent evt) { miTaskThread = new Thread(miTask); miTaskThread.start(); miRunnableThread = new Thread(miRunnable); miRunnableThread.start(); miTimer = new Timer(); miTimer.scheduleAtFixedRate(miTimerTask, 0, 100); } } ); */ VBox vBox = new VBox(); vBox.setPadding(new Insets(5, 5, 5, 5)); vBox.setSpacing(5); vBox.getChildren().addAll ( new Label("Run in Thread(Task)"), progressBarTask, new Label("Run in Thread(Runnable)"), prgbarRunnable, new Label("Run in Timer and TimerTask"), prgbarTimerTask, btnStart ); StackPane root = new StackPane(); root.getChildren().add(vBox); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("java-buddy.blogspot.com"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } class MiTask extends Task<Void> { @Override @SuppressWarnings("SleepWhileInLoop") protected Void call() throws Exception { for (int i = 1; i <= MAX; i++) { updateProgress(i, MAX); Thread.sleep(100); } return null; } } class MiRunnable implements Runnable { ProgressBar prgbar; public MiRunnable(ProgressBar prgbar) { this.prgbar = prgbar; } @Override @SuppressWarnings("SleepWhileInLoop") public void run() { for(int loo = 1; loo <= MAX; loo++) { final double prgIdx = loo; //prgbar.setProgress(prgIdx / MAX); Platform.runLater ( ()->{prgbar.setProgress(prgIdx / MAX);} //error: local variable referenced from a lambda expression must be final or effectively final //()->{prgbar.setProgress(loo / MAX);} /* new Runnable() { @Override public void run() { prgbar.setProgress(prgIdx / MAX); } } */ ); try { Thread.sleep(100); } catch(InterruptedException exc) { Logger.getLogger(JavaFXThreading.class.getName()).log(Level.SEVERE, null, exc); } } } } class MiTimerTask extends TimerTask { ProgressBar prgbar; double count; public MiTimerTask(ProgressBar prgbar) { this.prgbar = prgbar; count = 0; } @Override public void run() { prgbar.setProgress(count / MAX); if(++count >= MAX) { miTimer.cancel(); } } }}
0 0
- JavaFX threading demo
- QT Demo 之 threading
- javafx登录demo透明效果
- QT Demo 之 threading(2) Spinner
- QT Demo 之 threading(3) triangle
- Threading
- Threading
- threading
- threading
- Threading
- threading
- JavaFx
- JavaFX
- JavaFX
- javaFX
- JavaFx
- JAVAFX
- javafx
- Remove '@override' annotation
- 栈帧
- Ubuntu下运行Eclipse时一些错误的解决办法:
- Excel 成绩计算
- UML类图关系大全
- JavaFX threading demo
- 【leetcode】Add Two Numbers-----Java
- 深度学习网站
- 解析Javascript事件冒泡机制
- 如何编译运行Android系统自带桌面Launcher2源码
- 微服务--使用Spring Boot创建微服务
- Android 大分辨率 问题.(supports-screens)
- Play框架的请求处理流程1
- Launcher2 界面修改 <1>