Tag: tornadofx

TornadoFX:允许将一个项目从一个列表视图复制到剪贴板

当列表视图中的项目被选中时,我希望用户能够将内容复制到剪贴板。 我怎样才能做到这一点?

Tornadofx Javafx – 如何重新加载视图/组件

所以它是一个基本的问题。 我想实现的是从另一个角度来看令人耳目一新的观点。 比方说,我有一个视图EmployeeTableView通过执行REST API调用显示员工的表格表示形式。 另一种观点,我有一个过滤器EmployeeFilterView,其中我有性别,工资范围,雇员类型等 我也有一个userContext对象,在其中存储用户首选项。 所以默认情况下可以说我已经存储了性别过滤器的值为Male,工资范围为ALL等。这个对象作为参数发送到EmployeeTableView。 当EmployeeTableView被加载时,我用userContext值做一个restAPI调用来获取员工详细信息。 所以这工作正常。 现在我将性别过滤器更改为女性,并在我的userContext中分配此值。 现在,如果我可以用userContext对象重新加载EmployeeTableView,restapi调用将获得更新的值。 但是我怎么能这样做呢? 如果你有,也建议更好的方法。

TornadoFX JavaFX Sync跨桌面浏览

我正在尝试在桌面浏览器中同步滚动条。 (水平和垂直) SyncScrollEx视图有两个tableView,基本上是一个并排放置的片段,具有相同的数据集,因此具有相同的表格大小布局。 预期的行为:当我在一个tableview上滚动时,另一个tableview的滚动条也应该滚动相同的数量。 以下是我目前的进展: import javafx.beans.property.SimpleIntegerProperty import javafx.beans.property.SimpleStringProperty import javafx.collections.FXCollections import javafx.scene.control.ScrollBar import tornadofx.* class SyncScrollEx : View() { override val root = hbox { setPrefSize(300.0, 150.0) this += find<MyTableFrag>() this += find<MyTableFrag>() } } class MyTableFrag : Fragment() { var addEventOnlyOnceFlag = false val persons = FXCollections.observableArrayList<GameWarrior>( GameWarrior(1,"Tyrion Lannister", "M"), GameWarrior(2,"Ned Stark", "M"), […]

TornadoFX与TestFX在每个TestCase之后关闭视图

我正在尝试使用testfx框架测试基本的登录屏幕(使用tornadofx创建)。 我添加了3个运行良好的测试用例,但问题是他们使用前一个阶段而不是创建一个新的测试用例。 我希望测试用例能够独立运行。 我正在测试一个View()而不是一个App()。 如果我使用MyMainApp()。start(stage)然后MyMainApp()。stop(),我得到所需的行为。 但是如何为Views和Fragments做到这一点。 以下是代码: class LoginScreenFeatureTest : ApplicationTest() { override fun init() { FxToolkit.registerStage { Stage() } } override fun start(stage: Stage) { LoginScreen().openWindow() //MyMainApp().start(stage) } override fun stop() { FxToolkit.cleanupStages() //FxToolkit.toolkitContext().registeredStage.close() //MyMainApp().stop() } @Test fun should_contain_button() { // expect: verifyThat("#submitBut", hasText("SUBMIT")) } @Test fun should_click_on_button_and_pass_login() { //init //Why do I always […]

Tornadofx tableview使用组合框和按钮上添加FXEvent

我需要帮助解决以下基本问题: 需求: 我有一个tableview可以编辑(内联),行也可以删除太多,如果需要一些复杂的操作点击一个按钮。 我的下面是三个小问题: 我用isEditable = true创建了一个tableview,并将列名称设置为可编辑的。 但是当我编辑,它不绑定到模型。 (必须缺少一件非常简单的事情) 编辑时,组合框显示选项,但选择一个值,抛出一个异常。 java.lang.ClassCastException:javafx.beans.property.SimpleStringProperty不能转换为javafx.beans.property.ObjectProperty 然后,我添加了一个删除按钮,这工作正常,当我取消tableView.items.removeAt(索引) 但是因为我想要一些额外的功能,我决定去FXEvent的火灾。 但是我应该如何在这里使用。 class MyView : View() { val warriorModel : WarriorModel by inject() val persons = FXCollections.observableArrayList<Warrior>( Warrior(1,"Tyrion Lannister", "M"), Warrior(2,"Ned Stark", "M"), Warrior(3,"Daenerys Targaryen", "F"), Warrior(4,"Arya Stark", "F") ) override val root = vbox { tableview(persons) { isEditable = true column("ID", Warrior::idProperty) […]

Tornadofx tableview同步两个表

基本的新手问题: 我想同步/绑定两个表。 为了保持简单的例子,我使用了两个独立的表格视图。 这需要使用碎片和范围来完成,我认为这会使问题复杂化,因为我陷入了一个基本问题。 行为:点击表1的同步按钮,我希望表1选择的数据覆盖相应的表2数据 。 反之亦然 人模型: class Person(firstName: String = "", lastName: String = "") { val firstNameProperty = SimpleStringProperty(firstName) var firstName by firstNameProperty val lastNameProperty = SimpleStringProperty(lastName) var lastName by lastNameProperty } class PersonModel : ItemViewModel<Person>() { val firstName = bind { item?.firstNameProperty } val lastName = bind { item?.lastNameProperty } } […]

无法使用TornadoFX将节点置于StackPane中

我试图做一个简单的视图,我有一个背景节点( 现在,我有一个文本节点在这里,但最后的节点将是一个SVG路径 )在VBox后面。 我试图让我的背景节点居中在根StackPane之前我移动到实施VBox ,但我似乎无法让我的节点正确居中。 这是我的课程: class UserInputUI : App(InputView::class, UIStyles::class) { init { reloadStylesheetsOnFocus() } override fun start(stage: Stage) { stage.minWidth = 1024.0 stage.minHeight = 768.0 super.start(stage) } } class InputView : View() { override val root = StackPane() init { text("I wish to be centered") { stackpaneConstraints { alignment = Pos.CENTER addClass(UIStyles.headerFontStyle) } […]

tornadofx EventBus使用tableview对象展开表格行

背景: 假设我在一个视图中有一个表的多个片段 ,每个都有一个rowExpander。 预期的行为: 如果在一个表格片段中我展开一行,其他片段相同的索引行应该展开。 相同的崩溃 我的进度: 样品片段: tableview(dataset) { column("First Name", Person::firstNameProperty) column("Last Name", Person::lastNameProperty) rowExpander(true) { selectedData.item?.apply { fire(ExpandDataEvent(dataset.indexOf(this))) } column("Mobile Nos.", Person::mobileNumProperty) column("Email Ids", Person::emailIdProperty) } bindSelected(selectedData) subscribe<ExpandDataEvent> { event -> selectionModel.select(event.index) } } 活动分类: class ExpandDataEvent(val index: Int) : FXEvent() 我从“订阅”中得到的理解是,当事件被触发时,它会被调用(当用户通过双击/单击加号扩展行时,我正在触发事件)。 并且由于订阅被放置在tableview中,所以它被调用来存在所有的表格片段(这是我想要的)。 但在订阅方法中,我正在做一个selectionModel.select(event.index),它只选择相应的索引行。 我想扩大行(最好通过使用selectionModel) 问题2: 是否可以删除加号列? 对于rowExpand,如果我已经将expandOnDoubleClick设置为true,我不希望我的tableview中的加号列。

绑定的属性不起作用

我正在使用TornadoFX 1.7.5,我似乎无法获得绑定属性的工作。 我有下面的ItemViewModels class DynamicMenuViewModel : ItemViewModel<DynamicMenu>(DynamicMenu()) { val title = bind { item?.title?.toProperty() } val isBold = bind { item?.isBold?.toProperty() } val routes = bind { item?.routes?.toProperty() } } data class DynamicMenu(var title: String = "", var isBold: Boolean = false, var routes: MutableList<MenuRouteViewModel> = mutableListOf()) class MenuRouteViewModel : ItemViewModel<MenuRoute>(MenuRoute()) { val url = […]

在TornadoFX中设置PrimaryStage或Scene属性的方法

我是新的tornadoFX,我不知道如何设置PrimaryStage或场景的属性,如场景的高度或宽度或PrimaryStage模态。 请帮帮我。 UPDATE 我想设置场景的高度和宽度,看这个例子: dependencies { compile 'no.tornado:tornadofx:1.5.2' compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.3" } import javafx.scene.control.Label import javafx.scene.layout.VBox import tornadofx.App import tornadofx.FX import tornadofx.View class Main : App() { override val primaryView = MyView::class init { // this two lines have error ( Val cannot be reassigned. ) FX.primaryStage.scene.height = 600.0 FX.primaryStage.scene.width = 800.0 // or this line […]