ScalaFX(JavaFX):调整窗口大小时,舞台内容不会调整大小
为了检查这一意外行为,我只需将一个ScalaFX(JavaFX):调整窗口大小时,舞台内容不会调整大小,java,scala,javafx,scalafx,Java,Scala,Javafx,Scalafx,为了检查这一意外行为,我只需将一个TextArea直接放入PrimaryStage包含的场景中:在应用程序启动时,TextArea与窗口完全匹配(如预期) 但是如果我移动窗口的边框,文本区域的大小不会改变,这正是我试图解决的问题。 这是我的ScalaFX代码(我希望它的行为与JavaFX的等效代码完全相同): 要使TextArea正确调整大小,您需要一个布局。例如,边框窗格应用作场景的内容 有关布局的更多信息,请访问 更新 看过ScalaFX源代码后,我意识到应该在场景中使用root而不是co
TextArea
直接放入PrimaryStage
包含的场景中:在应用程序启动时,TextArea
与窗口完全匹配(如预期)
但是如果我移动窗口的边框,文本区域的大小不会改变,这正是我试图解决的问题。
这是我的ScalaFX代码(我希望它的行为与JavaFX的等效代码完全相同):
要使TextArea
正确调整大小,您需要一个布局。例如,边框窗格
应用作场景的内容
有关布局的更多信息,请访问
更新
看过ScalaFX源代码后,我意识到应该在场景中使用root
而不是content
JavaFX等价物按预期运行;TextArea
占据了整个场景。我的代码没有问题吧?谢谢你提供的信息。我会尝试把它移植到Java,看看这是否是Ubuntu的问题……我看不出你的代码有什么问题,但我不是Scala程序员,所以。但是我测试了JavaFX等价物(没有“has-no-effect”行),效果很好。谢谢。这有助于我理解JavaFX是如何工作的。事实上,我在黑暗中摸索,甚至尝试用AnchorPane解决它(没有成功),因为JFXApp的行为让我觉得有必要使用一个窗格来调整它的大小。。通常,根目录将调整大小以填充场景,无论它是否是窗格
的子类。非常感谢,Eugene。使用root
而不是content
可以调整它的大小(从而按预期工作)。我已经放弃了希望在我的代码中出现这样一个简单的bug,但它仍然是这样一个简单的bug:-)现在我可以开始在Ubuntu上享受JavaFX+Scala了!
object MyApp extends JFXApp {
stage = new PrimaryStage {
title = "My App"
resizable = true // has no effect
maxWidth = Double.MaxValue // has no effect
maxHeight = Double.MaxValue // has no effect
val outputDisplay = new TextArea {
resizable = true // has no effect
maxWidth = Double.MaxValue // has no effect
maxHeight = Double.MaxValue // has no effect
hgrow = Priority.Always // has no effect
vgrow = Priority.Always // has no effect
}
scene = new Scene {
resizable = true // has no effect
maxWidth = Double.MaxValue // has no effect
maxHeight = Double.MaxValue // has no effect
fill = LightGreen
// add outputDisplay as content
content = outputDisplay
}
}
}