1

我使用边框窗格作为布局。底部的孩子有一个 ScrollPane,它应该使用 Border Pane 的完整宽度(拉伸) - 无论其内容如何。

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)
    }
  }
}

它在运行时看起来如下:

在运行时

我有没有机会在不手动设置 ScrollPane 的宽度的情况下实现这一点?

4

1 回答 1

2

在 ScalaFX 中,除非传递了父级,否则 Scene 将使用空 Group 进行实例化。

class Scene(override val delegate: jfxs.Scene = new jfxs.Scene(new jfxs.Group())) 

所以,不是设置,而是设置content场景root

scene = new Scene {
    root = new BorderPane() {
    center = Label("This is my center text")
    bottom = scrollPane
  }
}

您一定已经注意到,我什至在添加 ScrollPane 之前删除了您添加到底部的新窗格。

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
      }
    }
  }
}

截屏

在此处输入图像描述

于 2015-11-15T16:02:46.327 回答