Как установить шрифт для диалогового окна оповещения в JavaFX? - PullRequest
0 голосов
/ 09 декабря 2018

Я использую JavaFX для создания приложения.

Я могу установить шрифт для сцены.Но я не могу установить шрифт для диалогового окна системного предупреждения.

Я использую TornadoFX и kotlin.

Так как этого добиться?

Я использовал javafx.scene.control.Alert # Alert (javafx.scene.control.Alert.AlertType, java.lang.String, javafx.scene.control.ButtonType ...) для диалога.

Вот код:

import javafx.application.Application
import javafx.collections.ObservableList
import org.apache.commons.io.FilenameUtils
import tornadofx.*
import java.nio.file.FileSystems
import java.nio.file.Files
import java.nio.file.Paths
import kotlin.streams.toList

class Music(artist: String, title: String, filename: String) {
    var artist: String by property(artist)
    var title: String by property(title)
    var filename: String by property(filename)

    override fun toString(): String {
        return "Music($artist:$title)"
    }
}

class MainView : View() {
    private val mainController: MainController by inject()
    private val musics = mainController.loadMusics()

    override val root = tableview(musics) {
        minWidth = 600.0
        minHeight = 400.0
        column("Artist", Music::artist) {
            maxWidth = 200.0
        }
        column("Title", Music::title)
        onUserSelect {
            information("Selected: $it")
        }
    }

    init {
        musics.addAll(mainController.loadMusics())
    }
}

class MainStylesheet : Stylesheet() {
    init {
        root {
            fontFamily = "Noto Sans CJK SC Medium"
            fontSize = 20.px
        }
    }
}

class MainController : Controller() {
    fun loadMusics(): ObservableList<Music> {
        val matcher = FileSystems.getDefault().getPathMatcher("glob:**.{wma,mp3}")
        return Files.walk(Paths.get("/mnt/d/music/test"))
                .filter { Files.isRegularFile(it) }
                .filter { matcher.matches(it) }
                .map {
                    val baseName = FilenameUtils.getBaseName(it.toString())
                    val parts = baseName.split("-", limit = 2)
                    Music(parts.first(), parts.last(), it.toString())
                }.toList().observable()
    }
}

class App : tornadofx.App(MainView::class, MainStylesheet::class)

fun main(args: Array<String>) {
    Application.launch(App::class.java, *args)
}

Вот захват:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...