본문 바로가기

코틀린

코틀린 javafx 윈도우 백그라운드

728x90
  1. JavaFX 애플리케이션 생성
    • JavaFX 애플리케이션을 생성하려면 클래스를 상속받은 클래스를 작성해야 합니다.Application
    • start() 메서드에서 GUI를 초기화하고 표시합니다.
  2. 백그라운드 프로그램 실행
    • 백그라운드에서 실행할 프로그램을 작성합니다.
    • start() 메서드에서 백그라운드 프로그램을 시작하고 필요한 경우 스레드를 사용하여 병렬로 실행할 수 있습니다.
    • 프로그램이 실행되는 동안 GUI를 업데이트하려면 메서드를 사용하여 GUI 업데이트를 JavaFX Application 스레드에 보낼 수 있습니다.Platform.runLater()
  3. 애플리케이션 종료 처리
    • 애플리케이션이 종료될 때 백그라운드 프로그램을 중지해야 합니다.
    • stop() 메서드에서 백그라운드 프로그램을 중지하고 자원을 정리합니다.
    • import javafx.application.Application
      import javafx.application.Platform
      import javafx.scene.Scene
      import javafx.scene.control.Label
      import javafx.scene.layout.StackPane
      import javafx.stage.Stage

      class MyApp : Application() {
          private lateinit var backgroundThread: Thread

          override fun start(primaryStage: Stage) {
              // GUI 초기화
              val root = StackPane(Label("My App"))
              primaryStage.scene = Scene(root, 200.0, 100.0)
              primaryStage.show()

              // 백그라운드 프로그램 시작
              backgroundThread = Thread {
                  // 여기에서 백그라운드에서 실행할 작업을 수행합니다.
                  while (true) {
                      // 백그라운드에서 작업하는 동안 GUI 업데이트
                      Platform.runLater {
                          root.children[0] = Label("Count: ${System.currentTimeMillis()}")
                      }
                      Thread.sleep(1000)
                  }
              }
              backgroundThread.start()
          }

          override fun stop() {
              // 백그라운드 프로그램 중지 및 자원 정리
              backgroundThread.interrupt()
          }
      }

      fun main() {
          Application.launch(MyApp::class.java)
      }
  4. 이 예제에서는 메서드에서 백그라운드 스레드를 시작하여 1초마다 GUI를 업데이트합니다. 메서드에서는 백그라운드 스레드를 중지합니다. 이 예제에서는 스레드가 무한 루프를 돌고 있으므로 를 호출하여 스레드를 중지합니다. 만약 백그라운드 프로그램이 자원을 사용하는 경우, 자원을 정리하는 작업도 메서드에서 수행해야 합니다.start()stop()interrupt()stop()
728x90