Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx ScalaFX:如何拉伸滚动窗格以适合其父级_Javafx_Scalafx - Fatal编程技术网

Javafx ScalaFX:如何拉伸滚动窗格以适合其父级

Javafx ScalaFX:如何拉伸滚动窗格以适合其父级,javafx,scalafx,Javafx,Scalafx,我使用的布局。底部的子级有一个滚动窗格,它应该使用边框窗格的完整宽度(拉伸),而不管其内容如何 val scrollPane = new ScrollPane() { hbarPolicy = ScrollBarPolicy.ALWAYS content = new TextFlow() { children.add(new Text("Hello World")) } } stage = new PrimaryStage { title = "ScalaFX Hello World" w

我使用的布局。底部的子级有一个滚动窗格,它应该使用边框窗格的完整宽度(拉伸),而不管其内容如何

val scrollPane = new ScrollPane() {
hbarPolicy = ScrollBarPolicy.ALWAYS
content = new TextFlow() {
  children.add(new Text("Hello World"))
}
}

stage = new PrimaryStage {
title = "ScalaFX Hello World"
width = 1024
height = 768
scene = new Scene {
  content = new BorderPane() {
    center = Label("This is my center text")
    bottom = new Pane {
      children.add(scrollPane)
    }
  }
}
它在运行时的外观如下所示:


有没有可能不用手动设置滚动窗格的宽度就可以实现这一点?

在ScalaFX中,除非传递了一个父对象,否则场景将用一个空组实例化

class Scene(override val delegate: jfxs.Scene = new jfxs.Scene(new jfxs.Group())) 
因此,不要设置
内容
,而是设置场景的

scene = new Scene {
    root = new BorderPane() {
    center = Label("This is my center text")
    bottom = scrollPane
  }
}
您一定已经注意到,在添加滚动窗格之前,我甚至删除了您要添加到底部的新窗格

MCVE

屏幕截图


默认情况下,它应采用边框窗格的完整宽度。请为我们添加一些代码以验证您的用例。完成。这个例子在Scala中,但我认为只有树的层次结构才重要。我在最初的描述中遗漏了我在两者之间有一个窗格(在真正的项目中)。这似乎是问题所在。嗯……我看不出有什么不同。没有额外的新窗格,我一点问题也没有。我需要这个窗格,因为在我的实际项目中,我有一个小的UI框架,可以生成them@Hawk66添加了一个MCVE和一个屏幕截图
import scalafx.application.JFXApp
import scalafx.scene.Scene
import scalafx.scene.control.ScrollPane.ScrollBarPolicy
import scalafx.scene.control.{Label, ScrollPane}
import scalafx.scene.layout.BorderPane
import scalafx.scene.text.{Text, TextFlow}

object Main extends JFXApp {

  val scrollPane = new ScrollPane() {
    hbarPolicy = ScrollBarPolicy.ALWAYS
    content = new TextFlow() {
      children.add(new Text("Hello World"))
    }
  }
  stage = new JFXApp.PrimaryStage {
    title.value = "Hello Stage"
    width = 200
    height = 150
    scene = new Scene {
        root = new BorderPane() {
        center = Label("This is my center text")
        bottom = scrollPane
      }
    }
  }
}