我是tornadoFX的新手,我不知道如何设置PrimaryStage或Scene属性,如场景高度或宽度或PrimaryStage模态.请帮我.
UPDATE
我想设置场景高度和宽度,看看这个例子:
dependencies {
compile 'no.tornado:tornadofx:1.5.2'
compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.3"
}
Run Code Online (Sandbox Code Playgroud)
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 causes this exception ( java.lang.NoSuchMethodException )
FX.primaryStage.isResizable = false
}
}
class MyView : View() {
override val root = VBox()
init {
root.children.add(Label("My label"))
} …Run Code Online (Sandbox Code Playgroud) 我是javafx,kotlin和明显tornadofx的新手.
问题:
如何在每个实例上将参数传递给Fragment?
假设我有一个表视图布局作为我的片段.现在,此片段在多个位置使用,但具有不同的数据集.
例如.添加片段:
class SomeView : View() {
...
root += SomeViewFragment::class
}
class SomeAnotherView : View() {
...
root += SomeViewFragment::class
}
Run Code Online (Sandbox Code Playgroud)
声明片段:
class SomeViewFragment : Fragment() {
...
tableview(someDataSetFromRestApiCall) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
如何从SomeView和SomeAnotherView传递不同的someDataSetFromRestApiCall?
我正在寻找javafx的解决方案FileChooser(在Kotlin).我坚持这个,我无法通过root View,因为Window!预计:
button("open some file") {
setOnAction {
val fileChooser = FileChooser();
val file = fileChooser.showOpenDialog(???)
...
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下我应该通过什么?
我已经开始工作了javafx.我想知道的区别javafx和Tornadofx.它们如何相互关联,彼此不同.
还在何时使用什么.
是否有任何javafx更有用/建议使用的情况,Tornadofx反之亦然?
问题描述
我有JavaFX和TornadoFX的问题。当我在MacOS 10.15(Catalina)上启动我的应用程序时,出现以下错误消息:
按键接收
“您的应用程序”希望从任何应用程序接收击键。
在“系统偏好设置”中的“安全性和隐私”偏好设置中授予对此应用程序的访问权限。
我创建的任何JavaFX和TornadoFX应用程序都会看到此错误消息。无论多么简单。
有什么办法可以使此消息消失?显示此提示时,我不想发布该软件。
环境
我还尝试了其他版本,例如JavaFX13和TornadoFX 2.0.0-SNAPSHOT,但是看到了相同的提示。
可能与此有关:
编辑
Orcale JIRA中的错误报告:https ://bugs.openjdk.java.net/browse/JDK-8231513
我一直在尝试 Tornadofx。尝试创建自定义标题栏,这是我目前正在尝试的代码
fun main(args: Array<String>) {
launch<MyApp>(args)
}
class MyApp : App(Title::class) {
override fun start(stage: Stage) {
stage.initStyle(StageStyle.UNDECORATED)
stage.minWidth = 600.0
stage.minHeight = 450.0
stage.isMaximized = false
super.start(stage)
}
}
class Title : View() {
private var xOffset = 0.0
private var yOffset = 0.0
private var screenBounds: Rectangle2D = Screen.getPrimary().visualBounds
private var originalBounds: Rectangle2D = Rectangle2D.EMPTY
init {
primaryStage.isMaximized = false
}
override val root = borderpane {
onMousePressed = EventHandler { ev ->
xOffset = primaryStage.x - …Run Code Online (Sandbox Code Playgroud) 我想创建一个应该是桌面应用程序的新项目。为此,我选择了 Kotlin 语言和 TornadoFX 框架。我已经安装了TornadoFX插件并创建了一个新的 T tornadofx-gradle-project。Intellij 进行的基本设置成功,但我遇到了问题。当我想运行生成的项目时,它失败了。该项目无法解析 java fx。我已经通过网络挖掘并没有发现可以解决问题的任何内容。我在构建失败后收到的错误日志是:
有没有人面临同样的问题?我怎样才能摆脱它?
我已经安装了 JDK 11 并将其设置为构建配置,但我仍然收到问题:
java.lang.UnsupportedClassVersionError: org/openjfx/gradle/JavaFXPlugin has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
Run Code Online (Sandbox Code Playgroud)
是否有更改,我在中间错过了什么?
我在 Kotlin 中有一个简单的应用程序,它绘制一个矩形,然后使用fixedRateTimer 每秒更新矩形的位置 30 次。我遇到的问题是,当我关闭显示矩形的窗口时,应用程序继续运行,我必须按 Intellij 内的红色方块才能真正停止它。
我曾尝试在关闭窗口之前取消fixedRateTimer,但应用程序仍在运行,它似乎没有执行任何操作。如果我在没有fixedRateTimer的情况下运行应用程序,它只会显示方块,然后当我关闭窗口时,它会停止应用程序。
import javafx.scene.paint.Color
import tornadofx.*
import kotlin.concurrent.fixedRateTimer
class MyApp: App(MyView::class)
class MyView : View() {
override val root = stackpane {
group {
rectangle {
fill = Color.LIGHTGRAY
width = 600.0
height = 480.0
}
val myRect = rectangle {
fill = Color.BLUEVIOLET
width = 30.0
height = 30.0
x = 100.0
y = 100.0
}
fixedRateTimer("default", false, 0L, 1000/30) {
myRect.x += 1
if(myRect.x > 200) this.cancel()
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想使用 typesafe css 在 tornadofx 应用程序中加载自定义字体,这可能吗?谢谢和最好的问候。
我正在学习如何使用kotlin,并已开始使用tornadoFX。我正在尝试阅读指南,但是我无法弄清楚“具有不同类型的TreeView”的含义。似乎我应该使用星形投影,当您在通话中使用*时,我就知道。
但是,一旦我这样做,树视图就会说“不允许在函数和属性的类型参数上进行投影”
这是我的代码:
MainView类:View(“”){
override val root = treeview<*> {
root = TreeItem(Person("Departments", ""))
cellFormat {
text = when (it) {
is String -> it
is Department -> it.name
is Person -> it.name
else -> throw IllegalArgumentException("Invalid Data Type")
}
}
populate { parent ->
val value = parent.value
if (parent == root) departments
else if (value is Department) persons.filter { it.department == value.name }
else null
} }
}
Run Code Online (Sandbox Code Playgroud)
老实说,我很沮丧,我不知道我要做什么。
另外,如果任何人都可以为我提供一些学习Kotlin和tornadoFX的有用链接,将不胜感激:)