前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javafx框架tornadofx入门32_制作图标浏览工具

javafx框架tornadofx入门32_制作图标浏览工具

原创
作者头像
用户6167008
修改2020-05-18 18:14:46
1.4K0
修改2020-05-18 18:14:46
举报
文章被收录于专栏:javafx框架tornadofx

在build.gradle中添加如下依赖,ikonli=11.5.0:

代码语言:javascript
复制
implementation("org.kordamp.ikonli:ikonli-javafx:$ikonli")
implementation("org.kordamp.ikonli:ikonli-typicons-pack:$ikonli")
implementation("org.kordamp.ikonli:ikonli-material-pack:$ikonli")
implementation("org.kordamp.ikonli:ikonli-runestroicons-pack:$ikonli")
implementation("org.kordamp.ikonli:ikonli-icomoon-pack:$ikonli")
implementation("org.kordamp.ikonli:ikonli-fontawesome-pack:$ikonli")
implementation("org.kordamp.ikonli:ikonli-fontawesome5-pack:$ikonli")

View文件:

代码语言:javascript
复制
class MainAPP : App(MainView::class)
class MainView : View("ikonli viewer:可直接在图标上点击右键->复制") {
    lateinit var _tabpane: TabPane
    lateinit var searchContainer: FlowPane
    private val iconType = stringProperty("")
    private val searchKey = stringProperty("")
    private val ikonli = stringProperty()
    private val ikonliNum = intProperty()
    private val ikons = observableListOf<Ikon>()
    val iconTypes = observableListOf(
            "Material", "Runestroicons", "Icomoon", "Typicons"
            , "FontAwesome", "FontAwesomeBrands", "FontAwesomeRegular", "FontAwesomeSolid"
    )
    override val root = borderpane {
        left = vbox {

        }
        center = tabpane {
            _tabpane = this
            tabClosingPolicy = TabPane.TabClosingPolicy.UNAVAILABLE
            selectionModel.selectedItemProperty().onChange {
                it?.let {
                    if (it.text != "Search Result")
                        _iconNum(it.text)
                    else {
                        ikonliNum.set(searchContainer.children.size)
                    }
                }
            }
            iconTypes.forEach {
                tab(it) {
                    scrollpane {
                        flowpane {
                            _tabs(it, this)
                            prefWrapLengthProperty().bind((this@scrollpane).prefWidthProperty())
                            vgap = 5.0
                            hgap = 5.0
                            contextmenu {
                                item("copy") {
                                    action {
                                        clipboard.putString(ikonli.value)
                                    }
                                }
                            }
                        }
                        prefWidth = 800.0

                        style {
                            borderColor += box(Color.RED)
                        }
                    }
                }
            }
            tab("Search Result") {
                scrollpane {
                    searchContainer = flowpane {
                        prefWrapLengthProperty().bind((this@scrollpane).prefWidthProperty())
                        vgap = 5.0
                        hgap = 5.0
                    }
                    prefWidth = 800.0

                    style {
                        borderColor += box(Color.RED)
                    }
                }
            }
        }
        top = hbox(5) {
            alignment = Pos.CENTER
            textfield(searchKey) {
                minWidth = 400.0
                promptText = "search key word here then click the search button"
            }
            button {
                isDefaultButton = true
                icon(Material.SEARCH)
                action {
                    search()
                }
            }
        }
        bottom = hbox(5) {
            label(iconType)
            separator(Orientation.VERTICAL)
            label(ikonliNum)
            separator(Orientation.VERTICAL)
            textfield(ikonli) {
                hgrow = Priority.ALWAYS
            }
            alignment = Pos.CENTER_LEFT
        }
        right = drawer {
            item("用法") {
                vbox(5) {
                    label("JDK14 with javafx:")
                    hyperlink("https://d2.injdk.cn/openjdk/liberica/14/full/bellsoft-jdk14.0.1+8-windows-amd64-full.zip")
                    textarea {
                        vgrow = Priority.ALWAYS
                        text = """
            1.add below to gradle.properties file:
            ikonli=11.5.0
            
            2.add below to build.gradle file:
            implementation("org.kordamp.ikonli:ikonli-javafx:${'$'}ikonli")
            implementation("org.kordamp.ikonli:ikonli-typicons-pack:${'$'}ikonli")
            implementation("org.kordamp.ikonli:ikonli-material-pack:${'$'}ikonli")
            implementation("org.kordamp.ikonli:ikonli-runestroicons-pack:${'$'}ikonli")
            implementation("org.kordamp.ikonli:ikonli-icomoon-pack:${'$'}ikonli")
            implementation("org.kordamp.ikonli:ikonli-fontawesome-pack:${'$'}ikonli")
            implementation("org.kordamp.ikonli:ikonli-fontawesome5-pack:${'$'}ikonli")
            
            3.add button to your view:
            button {
              graphic = FontIcon.of(Material.SEARCH, 20, Color.RED)
              action {
              }
            }
          """.trimIndent()
                    }
                }
            }
        }
        setPrefSize(1024.0, 600.0)
        style {
            fontSize = 14.px
        }
    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在build.gradle中添加如下依赖,ikonli=11.5.0:
  • View文件:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档