1 /* 2 * Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. 3 */ 4 5 // This file was automatically generated from coroutines-guide-ui.md by Knit tool. Do not edit. 6 package kotlinx.coroutines.javafx.guide.exampleUiBasic03 7 8 import kotlinx.coroutines.* 9 import kotlinx.coroutines.channels.* 10 import kotlinx.coroutines.javafx.JavaFx as Main 11 import javafx.application.Application 12 import javafx.event.EventHandler 13 import javafx.geometry.* 14 import javafx.scene.* 15 import javafx.scene.input.MouseEvent 16 import javafx.scene.layout.StackPane 17 import javafx.scene.paint.Color 18 import javafx.scene.shape.Circle 19 import javafx.scene.text.Text 20 import javafx.stage.Stage 21 mainnull22fun main(args: Array<String>) { 23 Application.launch(ExampleApp::class.java, *args) 24 } 25 26 class ExampleApp : Application() { <lambda>null27 val hello = Text("Hello World!").apply { 28 fill = Color.valueOf("#C0C0C0") 29 } 30 31 val fab = Circle(20.0, Color.valueOf("#FF4081")) 32 <lambda>null33 val root = StackPane().apply { 34 children += hello 35 children += fab 36 StackPane.setAlignment(hello, Pos.CENTER) 37 StackPane.setAlignment(fab, Pos.BOTTOM_RIGHT) 38 StackPane.setMargin(fab, Insets(15.0)) 39 } 40 <lambda>null41 val scene = Scene(root, 240.0, 380.0).apply { 42 fill = Color.valueOf("#303030") 43 } 44 startnull45 override fun start(stage: Stage) { 46 stage.title = "Example" 47 stage.scene = scene 48 stage.show() 49 setup(hello, fab) 50 } 51 } 52 setupnull53fun setup(hello: Text, fab: Circle) { 54 val job = GlobalScope.launch(Dispatchers.Main) { // launch coroutine in the main thread 55 for (i in 10 downTo 1) { // countdown from 10 to 1 56 hello.text = "Countdown $i ..." // update text 57 delay(500) // wait half a second 58 } 59 hello.text = "Done!" 60 } 61 fab.onMouseClicked = EventHandler { job.cancel() } // cancel coroutine on click 62 } 63