我尝试编写一个可以打开多个子窗口的JavaFX应用程序(TornadoFX,因为我使用kotlin)。在i3wm中,每个窗口都应该以平铺模式显示。在其他非瓷砖窗口管理器,它应该开始最大化。但目前它总是以浮动模式开放。我想这可以通过最大化窗口来存档。因此,我在两个变体中尝试了下面的onDock()方法。但这两种变体都不起作用。
class FileMapFragment : Fragment() {
val file:Path by param()
final override val root =
borderpane {
当我使用openWindow和Modality.WINDOW_MODAL修饰符显示一个视图时,第一次该窗口的行为类似于模式窗口,但如果我关闭视图并再次打开它,它的行为就像非模式视图(可以访问父视图)。 这种行为可能是由于什么原因造成的? 非常感谢。 class VentanaPrincipal: View("Ventana principal") {
private val openModalSinParametros: OpenModalSinParametros by inject()
override val root = vbox {
我正在使用TornadoFX的fragment类,并使用它的openWindow()方法在一个新窗口中打开每个新的fragment。
窗户打开了,一切都很好。我已经将模式设置为Modality.NONE,以便在新片段处于活动状态时可以访问原始屏幕。
我遇到的问题是,新的窗口总是在顶部,所以我必须移动它来访问原来的窗口,而下面的窗口并不理想。
这是故意的吗?是否有办法改变这种行为?
我一直在使用openWindow()的owner =参数,将其设置为null和另一个Stage,但似乎没有任何效果。
首先,打开窗口的代码,view是片段。
//h here is just the histogra
我想测试一个在TornadoFX中创建新视图的函数。然而,当我调用这个函数时,我会得到这个错误。
java.lang.ExceptionInInitializerError
at tornadofx.ControlsKt.button(Controls.kt:190)
at tornadofx.ControlsKt.button$default(Controls.kt:190)
at view.PeopleMenuView$setupTopBox$1$1.invoke(PeopleMenuView.kt:33)
at view.PeopleMenuView$se
我在视图中有一个由整数属性控制的标签,当该值为负值时,它用减号显示,当该值为正时,则不显示。然而,我希望标签显示"+5","-3“.
以下面的代码为例
import javafx.beans.property.SimpleIntegerProperty
import tornadofx.*
class MyView : View() {
val negProp = SimpleIntegerProperty(-3) // this prop is in a ItemViewModel
val posProp = SimpleIntegerProperty
我在Kotlin和TornadoFX库一起工作。假设您有一个工具栏,其中显示了对当前视图有用的工具。因此,我们有一个具有subController属性的MainController,该属性是工具栏旁边的某个视图的控制器。因此,如果我们的subController发生变化,视图也应该更新。此外,如果subController的任何属性(如selectedTool、工具)发生更改,工具栏也应相应地更新。工具栏暂时不会更新。
class ToolBar : View("Tool bar") {
private val controller: MainController by
我有一个openWindow(word)函数,单击按钮时将调用该函数。此函数打开一个新窗口,打印单词并显示一个名为do的按钮。openWindow函数一直运行,直到其标记中的onclick被认为找到了do函数。我的问题是onclick似乎从来没有找到我的do函数。我做什么好?
我的do函数:
function do() {
alert("Life is what you make of it");
}
我的openWindow函数:
function openWindow(word) {
myWindow.document.write(word);
我一直按照TornadoFX指南学习使用FXML (),但遇到了一个错误:
java.lang.IllegalArgumentException: FXML not found for class ui.view.BoardView
以下是我的BoardView.kt视图:
class BoardView : View() {
override val root: BorderPane by fxml()
val hello: Label by fxid()
init {
hello.text = "Hello World"
}
我有一个简单的Google v3应用程序,它显示带有InfoWindow弹出窗口的标记,每个标记都带有一个小表单。当InfoWindow弹出时,我希望焦点立即放在单个输入元素上,但到目前为止还没有结果。下面是我使用的代码示例..。
var infowindow1 = new google.maps.InfoWindow;
var content = "<div id='infobox'>"+
"Rodney F. Stanley<hr>803-555-5555<br>"+
当一个按钮被点击时,我必须打开一个窗口,作为一个使用JavaScript的模式对话框。我使用过window.open,但它显示了两个实例,父页面和弹出页面。当弹出页面打开时,则不允许用户单击父页面。
function openWindow() {
var w = 950;
var h = 350;
var t = 0;
var l = 0;
var scrollbars = 1;
var modal = 'yes';
var reportWindow = window.open("Search.aspx" + '',
我一直在搜索docs和IDE自动完成建议,但无法解决这个问题。我发现最近的是onDelete(),它的工作方式与我想象的不一样。
当视图关闭时,我只需要一种运行一些清理代码的方法。
下面是使用文档中的简单示例进行的一次失败尝试。
import tornadofx.*
class MyApp: App(MyView::class)
class MyView: View() {
// this does not print when the window is closed
override fun onDelete() {
super.onDelete()
在我的应用程序中,我使用了多个具有相同view-viewmodel对的窗口。我还使用了unity容器。
我最近添加了一个翻译模块,WPF Localization Using RESX Files by Grant Frisken (代码项目)。现在,如果我更改语言,视图模型的构造函数将再次执行,并且不会存储任何变量。视图仍然将其datacontext设置为该视图模型的某个实例,但是所有视图都使用相同的视图模型。
目前我认为我使用了一个错误的方法,但什么会是更好的解决方案?
打开新窗口:
var openWindow = new MyView();
openWindow.Sho
我在Windows上有一个简单的JavaFX/TornadoFX项目,它构建在一个JAR中,并在我的计算机上安装的IntelliJ IDEA和JRE中正确运行。我想让这个项目可以在任何没有安装JRE的Windows计算机上运行。为此,我在IntelliJ中创建了一个工件"JavaFx应用程序“,并按照TornadoFX说明中的说明对其进行了配置。 project settings project settings 可执行文件成功构建,但是当我尝试运行它时,我得到错误消息"No method main in class com/example/demo/app/MyApp“。
在以下TornadoFX/Kotlin代码中 import javafx.scene.control.TreeItem
import javafx.scene.control.TreeView
import tornadofx.*
class MyObj {
var type : Int = 0
constructor(type : Int) {
this.type = type
}
}
class MainView: View("Minimal TV demo") {
var treeRoot : TreeItem