Я пытаюсь создать BigDecimal свойство BigDecimal которое является вычислением двух других свойств BigDecimal , например: val caculatedProperty: ObjectProperty<BigDecimal> = objectBinding<Any, BigDecimal>(sumProperty, discountProperty) { … } … как я бы сделал с StringProperty или IntegerProperty , и в противном случае он работал бы без проблем. Однако на этот раз я получаю несоответствие типа: он ожидает ObjectProperty<BigDecimal> […]
В TornadoFX я хочу отказаться от подписки на настраиваемое событие, чтобы получатель больше не обрабатывал ненужные события и, возможно, избегал чего-то вроде утечек памяти, однако, когда я использую метод unsubscribe<MyEvent> в моем коде, он вообще не работает , Вот часть моего кода: object MyEventObj: FXEvent(EventBus.RunOn.BackgroundThread) class MyEventBus(val personlist:List<PersonOld>): FXEvent() class MyController: Controller() { init { […]
Я просто озадачил использование TornadoFX в TornadoFX с Kotlin . Вывод всегда странный и неожиданный, что с ним происходит? Код находится здесь: data class Person(var name : String, var age : Int, var sex : Boolean) class MyView: View() { val list = listOf<Person>( Person("Name A", 20, false), Person("Name B", 22, false), Person("Name C", 21, […]
Я использую Kotlin TornadoFX для создания браузера. Когда я реализую WebEngine setCreatePopupHandler, я получаю сообщение об ошибке: e: surfing \ src \ surfing.kt: (76, 13): Модификатор 'override' не применим к 'local function' e: surfing \ src \ surfing.kt: (76, 13): Ожидаемое значение типа WebEngine! Я ссылался на этот Java-код с помощью JavaFX: webEngine.setCreatePopupHandler( new Callback<PopupFeatures, […]
Рассмотрим следующий пример: class Item(name: String, number: Int) { val nameProperty = SimpleStringProperty(name) var name by nameProperty val numberProperty by lazy { SimpleIntegerProperty(number) } var number by numberProperty } class MainView : View("Example") { val items = listOf(Item("One", 1), Item("Two", 2)).observable() override val root = vbox { tableview(items) { column("Name", Item::nameProperty).makeEditable() column("Number", Item::numberProperty).makeEditable(NumberStringConverter()) enableCellEditing() } […]
Привет, я новичок в использовании TornadoFX, и мне было интересно, какой лучший дизайн для MVP-структуры будет использовать TornadoFX? В MVP вид: -> делегирует все события, такие как нажатие кнопки на функцию в презентаторе -> не взаимодействует с моделью Вот некоторые из приблизительных идей прототипа: abstract class AbstractPresenter<View : tornadofx.View> : Controller() { var view: View […]
У меня есть следующий код: class ExampleView :View("My Example view") { val model:ExampleModel by inject() override val root= vbox { textfield(model.data) button("Commit") { setOnAction { model.commit() closeModal() } } button("Rollback") { setOnAction { model.rollback() closeModal() } } button("Just quit") { setOnAction { closeModal() } } } } class Example() { var data by property<String>() fun […]
Поэтому я получил ViewModel, содержащий Lines (это 2-точечные объекты, у которых есть свойство x и y double). Я хочу привязать это к некоторому холсту или чем-то вроде. Более того, может быть, что строки не добавляются постепенно к ViewModel, но все за один раз (например, при загрузке внешнего файла, который содержит много данных строк). Как вы […]
Я использую 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 = […]
Итак, у меня есть случай, когда мне нужно иметь N строк в форме: Label TextView/Checkbox . Возможно, мне придется иметь больше, чем эти две точки зрения, поэтому я хочу иметь возможность поддерживать все, что есть TornadoFx View . Я создал интерфейс, который имеет один метод, который возвращает TornadoFx View и выглядит следующим образом: interface ValueContainer […]