社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  tornado

如何在TornadoFx表视图中显示POJO属性?

Freewind • 6 年前 • 1459 次点击  

我正在编写一个非常简单的TornadoFX表演示,试图在表中显示一些POJO的属性,但单元格都是空的。

主要代码是:

data class User(val id: Int, val name: String)

private val data = listOf(User(111, "AAA"), User(222, "BBB"), User(333, "CCC"), User(444, "DDD")).observable()

class HelloWorld : View() {

    override val root = vbox {
        tableview(data) {
            column("id", User::id.getter)
            column("name", User::name.getter)
        }
    }
}

我用 User::id.getter 使其编译,但单元格是空的。

我做了很多搜索,但找不到代码来处理当前最新的龙卷风( 1.7.16 )

下面是一个完整的演示: https://github.com/javafx-demos/tornadofx-table-show-pojo-demo

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/34223
 
1459 次点击  
文章 [ 1 ]  |  最新文章 6 年前
Edvin Syse
Reply   •   1 楼
Edvin Syse    6 年前

你需要引用属性,而不是getter。 User::id . 要引用不可变属性,需要使用 readonlyColumn 建设者:

readonlyColumn("id", User::id)
readonlyColumn("name", User::name)

也就是说,您确实应该在域对象中使用javafx属性。在基于JavaFX的应用程序中不这样做只会使所有事情变得更困难,并且您可以从很多好处中解脱出来,或者至少您必须跳出困境。

下面是用可观察的JavaFX属性编写的完整应用程序。请注意,然后您将访问 idProperty nameProperty 而不是属性。使用此方法,对基础数据项的更改也将自动在TableView中可见:

class User(id: Int, name: String) {
    val idProperty = SimpleIntegerProperty(id)
    var id by idProperty

    val nameProperty = SimpleStringProperty(name)
    var name by nameProperty
}


private val data = listOf(User(111, "AAA"), User(222, "BBB"), User(333, "CCC"), User(444, "DDD")).observable()

class HelloWorld : View() {
    override val root = vbox {
        tableview(data) {
            column("id", User::idProperty)
            column("name", User::nameProperty)
        }
    }
}