Kotlin/CtrolsFX의 MaskerPane을 사용해 보십시오.
환경
MaskerPane이란 무엇입니까?
로드 중인 차량 아이콘과 반투명 마스크 세트를 표시하여 뒤에 있는 컨트롤에 접근할 수 없습니다.JavaFX의 Progress Indicator에만 덮어쓰는 기능이 추가되었을 뿐이지만 더욱 쉽게 사용할 수 있습니다.
Class MaskerPane
이번에 우리는 JavaFX에서 준비한 동시 실행 클래스 Task와 함께 사용할 것이다.
사용 예제 (작업)
상술한 이미지를 포획하는 컨트롤러 클래스의 실현
Controller.kt
class Controller {
@FXML lateinit private var maskerPane: MaskerPane
@FXML lateinit private var button: Button
@FXML fun onButtonAction(@Suppress("UNUSED_PARAMETER") event: ActionEvent) {
val task = object : Task<String>() {
override fun call(): String {
(0..400).forEach { count ->
updateProgress(count.toDouble(), 400.0) // [1]
Thread.sleep(10)
}
return "done"
}
}
maskerPane.progressProperty().bind(task.progressProperty()) // [2]
maskerPane.visibleProperty().bind(task.runningProperty()) // [3]
Thread(task).start()
}
}
1.JavaFX의 Task는void updateProgress(double workDone,double max)라는 방법을 제공합니다.작업 과정에서 작업 Done을 늘리는 동시에 이 방법을 사용해야 합니다. max에 도달할 때까지.2. MaskerPane의 progress를 Task의 progress에 따르도록 합니다.
task.progress 변경 -> maskerPane.progress 추종->maskerPane의 외관 변화
이런 절차는 실현될 수 있다.진도 자체는 0.0에서 1.0까지의 이중 정밀도값이다.
3. MaskerPane의 표시 여부가 작업을 수행하고 있는지 여부를 나타내는 값을 따릅니다.
즉, 작업이 중지되면 MaskerPane이 사라집니다.
변화
웹 페이지를 읽는 등 완료 시간을 예측할 수 없을 수도 있습니다.이 경우 다음과 같이 [1] 및 [2]의 행을 삭제할 수 있습니다.
주위 동기화
javafx.concurrent 패키지는 이 처리를 라인 안전으로 진행합니다.이 예에서 Task는 progress나 running 값을 다시 쓸 때 자동으로 JavaFX 프로그램 라인을 사용하기 때문에 화면이 엉망진창으로 다시 쓰여도 그림 라인을 의식하지 않습니다.
ORACLE: JavaFX의 동시
참고 자료
ControlsFX: Getting Started (sample)
ORACLE: Java Sample - Ensemble
FXML
Main.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.StackPane?>
<?import org.controlsfx.control.MaskerPane?>
<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0"
prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="maskerpane.Controller">
<Button fx:id="button" mnemonicParsing="false" onAction="#onButtonAction" text="Button"/>
<MaskerPane fx:id="maskerPane" visible="false"/>
</StackPane>
Reference
이 문제에 관하여(Kotlin/CtrolsFX의 MaskerPane을 사용해 보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/monolith52/items/8e5b3f3be57e4abcf986텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)